1

我知道我可以将事件处理程序分配给 html 元素或类,以便如果动态加载新元素,事件仍将触发新添加的元素。例如:

$('#main').on('click','a.link_class', function () {
    // ...
});

我有应用插件函数的元素,然后将它们包含在数组中。然后我需要为这个数组元素分配一个事件(特别是给他们,而不是给他们共同的类)。有什么方法可以避免使用 for 循环或 each() (这样最近添加到数组中的新元素仍然会随着事件触发)?像上面的例子一样简单的方法?就像是:

$('#main').on('plugin_event',array, function () {
    // ...
});

或者...

$('#main').on('plugin_event',array[i], function () {
    // ...
});
4

2 回答 2

2

您将必须跟踪数组,并在您的处理程序中检查当前事件目标是否存在于该数组中。

您可以使用data()来实现前者:

$("#main").data("plugin-array", yourArray);

然后,您可以使用$.inArray()实现后者:

$("#main").on("plugin_event", function(e) {
    if ($.inArray(e.target, $(this).data("plugin-array")) >= 0) {
        // Target element is present in the array, handle the event...
    }
});
于 2013-07-01T15:04:37.520 回答
0

最初创建数组时,您可以改为为每个数组添加一个唯一的 CSS 类。这将允许您使用 jQuery 选择器来返回所有元素并一次将附加行为绑定到它们。

如果您需要从数组中添加或删除元素,您可以从元素中添加或删除类。您可以缓存 jQuery 选择器的结果,以获得与您正在使用的数组类似的性能。

于 2013-07-01T15:00:57.940 回答