附加到列表视图的项目不可点击

Tim*_*imm 0 jquery listview jquery-mobile

当我在jQuery Mobile中向listview添加内容时,它们在单击时不会触发click事件.在下面的示例中,"凯迪拉克"无法点击.难道我做错了什么?

HTML:

<div data-role="page" id="p1">
    <ul data-role="listview" data-theme="b">
        <li><a href="#">Acura</a></li>
        <li><a href="#">Audi</a></li>
        <li><a href="#">BMW</a></li>
    </ul>
</div> 
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$('li').on('click',function(){
    alert('clicked');            
});

$('ul').append('<li><a href="#">Cadillac</a></li>');
$('ul').listview('refresh');
Run Code Online (Sandbox Code Playgroud)

js问题的答案

Nic*_*sky 5

尝试将您的代码更改为此

$('ul').on('click', 'li', function(){   # <-- That's the trick
    alert('clicked');            
});

$('ul').append('<li><a href="#">Cadillac</a></li>');
$('ul').listview('refresh');
Run Code Online (Sandbox Code Playgroud)

编辑:在这种情况下,即使DOM发生变化,on函数也会自动绑定clickli列表中的每个元素.因此,您可以随时添加列表项.所有这些都将具有click事件绑定.

使用live具有几乎相同功能的旧jQuery方法是一个坏主意,因为它具有非常缓慢的性能.

  • @Joro,http://stackoverflow.com/questions/12338631/items-appended-to-listview-are-not-clickable/12339229#12339229欢迎任何即兴/建议 (2认同)