3

だから私はこれを持っています:

$(".change_cont").prev().click(function(e){
  alert("Hello World");
}

次のように、これが新しく作成された要素で機能することを望みます。

$("body").on("click", $(".change_cont").prev(), function(){
  alert("Hello World");
}

これはうまくいきません。これには正しい構文がありますか、それとも単に不可能ですか?
ありがとう。

4

4 に答える 4

5

次のことを試しましたか?

var myElementId = "#" + $(".change_cont").prev().attr("id");

$("body").on("click", myElementId, function(){
  alert("Hello World");
});

ただし、これにはその要素にIDが必要です。そうでない場合は、クラスが割り当てられていれば、代わりにクラスを使用できると思います。その要素に何も割り当てられていない場合は、id またはクラスを割り当てるだけです。

前の要素に識別クラスまたは ID がない場合、要素が作成されたときにそれを作成しないのはなぜですか? その場合、それらにクラスを追加するだけで、id 属性の代わりにクラス名を使用できます。

$(".change_cont").each(function(e){
    if (!$(this).prev().hasClass('myClass'))
        $(this).prev().addClass('myClass');
});

$("body").on("click", ".myClass", function(){
  alert("Hello World");
});
于 2013-11-10T13:16:02.870 に答える
0

prev + siblingセレクターを使用して次の要素を選択することのみが可能です。別の要素の次の要素を選択して同じ結果が得られるかどうかを確認してください。

$("body").on("click", ".change_cont_another + *", function(){
  alert("Hello World");
}
于 2013-11-10T13:40:15.313 に答える
0

jquery api http://api.jquery.com/on/では、2 番目の引数のselector型は"String"である必要があると言われています。この場合は jQuery オブジェクトなので、バインディングは機能しないと思います。

于 2013-11-10T13:20:46.340 に答える