使用event-map动态绑定.on()方法
我正在使用此语法来确保事件绑定动态添加的li
元素
$('ul.list').on('click', 'li', function() { //do something });
我尝试用这样的事件映射存档相同的内容:
$('ul.list').hammer({ css_hacks : false }).on({ swipe : function(event){ //do something }, doubletap : function(event){ //some more code } }, 'li');
但它根本不起作用。 如果我将事件直接绑定到li
元素,它适用于现有元素,但不适用于动态添加的元素。
$('ul.list').find('li').hammer({ css_hacks : false }).on({ swipe : function(event){ //do something }, doubletap : function(event){ //some more code } });
如何将事件映射绑定到未来的元素?
带有2个参数的on()
与旧的bind()
function相同。
如果你想让它像live()
一样工作,那就像第一个例子中那样传递第三个参数。
此外,如果你在hammer()
方法上链接函数时遇到麻烦,请检查它并确保它返回“this”。
$('ul.list').on({ swipe : function() { ... }, doubletap : function() { ... } },'li');
如果你看看jquery文件, jquery live
它说, 不支持链接方法。 例如,$(“a”)。find(“。offsite,.external”)。live(…); 无效,无法按预期工作。
所以你可以这样做:
$('ul.list > li').hammer({ css_hacks : false }).live({ swipe : function(event){ //do something }, doubletap : function(event){ //some more code } });
但它已被弃用,我认为你的第一个例子应该有效。
我试过这个:
- aaa
- bbb
和
$("ul").on({ click:function(){ $(this).html('clicked'); }, dblclick:function(){ $(this).html('double clicked'); } },'li');
它有效,所以我想你的问题可能是事件的名称。