在其中附加带有函数的html

时间:2012-11-29 09:10:09

标签: javascript jquery

我有一个添加HTML的函数onclick

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/

3 个答案:

答案 0 :(得分:2)

如果您使用的是jQuery 1.7 +

,则可以使用jQuery.on()方法
//.on( events [, selector] [, data], handler(eventObject) )

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

对于以前的版本,您可以使用.live().bind()方法。

答案 1 :(得分:1)

使用它来检查动态添加的.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>");
});

如果你使用的jQuery小于1.8,那么请改用live:

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

基本上原因是因为当DOM加载时,初始点击功能只适用于已经在文档中的元素。但是使用on()处理程序,你设置一个监听器来检查领域(正文)中哪个内容有测试类,并使click事件在那个...

答案 2 :(得分: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>");
});