0

onclickHTML を追加する関数があります:

jQuery(".test").click(function() {
    jQuery(this).prevAll("input").val("5")
    jQuery(".after").append("<div><input /><a class='.test'>click doesn't work !</a></div>")
});

したがって、クラスをクリックすると.test、関数がトリガーされます。それは機能しますが、別のクラスを追加.testしました。それをクリックすると、関数はトリガーされません。なんで ?ありがとう。

フィドル: http://jsfiddle.net/csL8G/3/

4

3 に答える 3

2

jQuery.on()jQuery 1.7+を使用している場合は、メソッドを使用できます

//.on( events [, selector] [, data], handler(eventObject) )

$(document).on('click', '.test', function(){
   //....
});

以前のバージョンでは、.live()または.bind()メソッドを使用できます。

于 2012-11-29T09:14:46.957 に答える
1

Use this to check for dynamically added .test elements:

jQuery("body").on('click', '.test', function() {
   jQuery(this).prevAll("input").val("5");
   jQuery(".after").append("<div><input /><a class='.test'>click doesn't work !</a></div>");
});

If you are using jQuery less than 1.8 then use live instead:

jQuery('.test').live('click', function() { ...

Basically the reason is because when the DOM loads then the initial click function just applies to elements already IN the document. But with the on() handler you sets a listener to check within the realm (body) which content has the test class and makes the click event work on that...

于 2012-11-29T09:14:07.173 に答える
0

ねえあなたが書いたあなたのhtmlをチェックしてください:

<a class=".test"></a>

それだけである必要がありますclass="test"

jQuery("body").on('click', '.test', function() {
   jQuery(this).prevAll("input").val("5");
   jQuery(".after").append("<div><input /><a class='test'>click doesn't work !</a></div>");
});
于 2012-11-29T09:18:32.757 に答える