使用jQuery UI(w / jquery 1.9.1)。我有一个可排序的列表。我正在通过表单添加dom元素。用户单击按钮,将出现一个对话框。用户在文本框中键入文本,然后单击“添加页面”。新列表项将附加到列表中。问题是listview没有包含正确的CSS。
Heres a JSfiddle - > http://jsfiddle.net/RQKng/1/
在您单击红色按钮之前,您可以在列表项之间单击,并注意所选列表项变为蓝色。但是,任何新项目都不会变成蓝色。
我试过了:
$('#pageList ul').trigger('create').listview('refresh');
但我接到一个错误,即'对象没有方法'listview“'
答案 0 :(得分:1)
1:问题在于这一行:
$('.page').click(function() {
$('.page').removeClass('selected');
$(this).addClass('selected');
});
2:解决方案在这里:jsFiddle
3:一些解释:
因为您拥有事先不知道的动态元素,所以必须让jQuery知道这一点。来自jQuery docs:
事件处理程序仅绑定到当前选定的元素;他们 在您的代码调用.on()时页面上必须存在。
你想要的是这个:
Delegated events have the advantage that they can process events from descendant
elements that are added to the document at a later time.
解决方案:
$('.item-list').on("click","li",function() {
$('.page').removeClass('selected');
$(this).addClass('selected');
});