2013-03-08 48 views
-1

我有以下情况启动功能,我不真的有一个中心思想,为什么它不火:附加AHREF不上点击

$('.tab3').click(function() { 
       //console.log("test"); 
       $('.coda-nav').append('<a href="#" style="position: relative;" id="ref1">blabla</a>'); 
       $('.coda-nav').append('<a href="#" style="position: relative;" id="ref2">blabla</a>'); 
       $('.coda-nav').append('<a href="#" style="position: relative;" id="ref3">blabla</a>'); 
      }); 

这工作得很好。如果我点击tab3它追加3个链接!那么:

$('#ref2').click(function() { 
     console.log("test"); 
    }); 

请告诉我为什么在ref2上没有任何事发生onclick!

感谢泰德

回答

3

看看:http://api.jquery.com/on/

click处理程序不得到重视新创建<a>。您需要On来实时附加它。

因此,这将成为:

$(".coda-nav").on("click", "#ref2", function() { 
    console.log("test"); 
}); 
+0

好吧谢谢,这对我有用!但真的我永远不会得到它为什么我的代码段不起作用!它会超时工作吗?如果有人能向我解释为什么它没有被附上,那将是非常棒的! – supersize 2013-03-08 11:43:32

+0

好吧,简单点吧。当你的页面加载时,你附加你的点击(使用'.click()')处理程序到所有匹配'#ref2'的元素。但是,#ref2'没有任何元素,所以没有任何反应。然后你添加了id为'ref2'的锚点,但'click()'处理程序不再做任何事情。然而,使用'.on()',它会将处理程序附加到与选择器匹配的所有当前和* future *元素,因此它可以工作。 – 2013-03-08 11:48:55

+0

谢谢,有道理:) – supersize 2013-03-08 11:53:09

3

由于锚加入click事件的约束,在绑定事件不存在的,即元素。

您可以使用event delegation解决它:

$(".coda-nav").on("click", "#ref2", function() { 
    console.log("test"); 
}); 
+0

作品,感谢您! – supersize 2013-03-08 11:43:56