2

jqueryで多くの入力テキストフィールドを生成するループがあります。誰かがこれらの入力タグをクリックしたときに stopPropagation メソッドを起動したいと思います。私は、この方法が次のように機能すると考えています。

event.stopPropagation()

しかし問題は、入力タグの onClick 属性でこのメソッドを起動したいということです。このような:

$(handler).html('<input type="text" value="'+text+'" style="width:280px;" onClick=stopPropagation(); />');

そして、これは明らかな理由で機能しません。このクリックのイベント オブジェクトを取得する必要があります。よりスマートな方法は何ですか?

4

4 に答える 4

5

簡単です。次のように、onClick 呼び出しに「イベント」キーワードを追加するだけです。

$(handler).html('<input type="text" value="'+text+'" style="width:280px;" 
    onClick=stopPropagation(event); />');

次に、関数で:

function stopPropagation(event) { /* do work */ }

または、jQuery の方法で実行できます。

$('input').on("click", function(event) { /* do work */ });

thisインライン関数でeventは、単語のように、関数がイベント引数を取得する必要があることを js に伝えるキーワードであることを覚えておいてください

最後に、追加をすべてまとめて変更できます。

var newInp = $("<input />").width(280).text(text);
$(handler).append(newInp);
newInp.on("click", function(e) { /* e is your event */ });
于 2012-11-19T06:18:39.027 に答える
2

より賢明な方法は、インライン イベント ハンドラをまったく使用しないことです。

var el = $('<input type="text" value="'+text+'" style="width:280px;" />');
$(handler).append(el);
el.click(function(e){
    e.stopPropagation();
});
于 2012-11-19T06:13:25.187 に答える
1

このまま渡せます。

$('#id').click(function(event){
     event.stopPropagation();
});
于 2012-11-19T06:12:05.663 に答える
0

それ以外のonClick=stopPropagation()

あなたが使用することができます

$('#your_input_id').click(function(event){
     event.stopPropagation();
});
于 2012-11-19T06:14:04.877 に答える