0

使用 jQuery UI (w/jquery 1.9.1)。我有一个可排序的列表。我正在通过表单添加 dom 元素。用户单击一个按钮,将出现一个对话框。用户在文本框中输入文本并单击“添加页面”。一个新的列表项将附加到列表中。问题是列表视图不包含正确的 CSS。

这是一个 JSfiddle --> http://jsfiddle.net/RQKng/1/

在您单击红色按钮之前,您可以在列表项之间单击并注意选定的列表项变为蓝色。但是,任何新项目都不会变成蓝色。

我试过了:

$('#pageList ul').trigger('create').listview('refresh');

但我收到“对象没有方法“listview”的错误

4

1 回答 1

1

1:问题出在这一行:

$('.page').click(function() {
        $('.page').removeClass('selected');
        $(this).addClass('selected');
    });

2:解决方案在这里:jsFiddle

3:一些解释:

因为您有事先不知道的动态元素,所以您必须让 jQuery 意识到这一点。来自jQuery 文档

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .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');
});
于 2013-06-26T10:39:49.657 回答