2013-07-03 128 views
1

我在jQuery手机网站中动态地创建了一些按钮。我创建他们是这样的:一个用于多个按钮的.click事件处理程序

$('#Gallery' + i + ' .gallery').after('<button type="button" class="loadMorePhotos">More Photos...</button>'); 

然后,我创建一个简单的.click事件处理程序是这样的:

$(".loadMorePhotos").click(function(){ 
      alert("ok malaka!"); 
}); 

我很谨慎,不要使用id属性标识的按钮,因为我有多个按钮,这会搞砸了。相反,我使用class属性,据我了解应该工作。

但是,警报永远不会执行。我在这里做错了什么?

+0

确定在元素被插入后,你绑定了事件处理程序*请发布一个更完整的例子,说明这两条语句之间的关系。 –

+0

[由动态生成的元素触发的事件不会被事件处理程序捕获]的可能重复(http://stackoverflow.com/questions/12829963/events-triggered-by-dynamically-generated-element-are-not-captured-by -event-hand) –

+0

非常感谢@Felix的编辑和指出另一个非常有用的问题。干杯! –

回答

6

事件委托:

$(document).on("click", ".loadMorePhotos", function(){ 
     alert("ok malaka!"); 
}); 

因为你的内容是动态创建的,你必须绑定单击处理程序已经存在于DOM准备一个元素(在这种情况下,document

+1

(+1)你的速度更快! :) – Alvaro

+2

或者在创建后将事件处理程序绑定到元素。 –

+0

非常感谢先生。我没有意识到这一点,但现在我明白了! :d –

相关问题