我有一个过滤器调用返回的这个JQuery对象,我将事件附加到这样。
visibleCascadeParentCheckbox = $('.checkbox[data-cascade]:not(.hidden)').filter(function(){
return !$(this).parents('td').hasClass('nested')
});
$(visibleCascadeParentCheckbox).on('change', function() {...});
但我需要像这样进行事件委托
$('.table').on('click', ****selector from visibleCascadeParentCheckbox****, function() {..});
答案 0 :(得分:2)
您需要在事件处理程序中执行过滤检查:
$('.table').on('click', '.checkbox[data-cascade]:not(.hidden)', function() {
if ($(this).parents('td').hasClass('nested')) return; // exit!
// your code...
});
注意:重复使用 visibleCascadeParentCheckbox 选项是没有用的,因为该表可能已更改,使选择过时。您不会受益于事件委派的更具动态性。
答案 1 :(得分:0)
您可以遍历visibleCascadeParentCheckbox
数组中的每个元素,并获取每个元素的字符串。然后你可以获取该字符串,用逗号和句号替换空格以选择下一个类,依此类推。我们在委托点切片以删除第一个逗号。
var classes = "";
visibleCascadeParentCheckbox.forEach(function(checkbox) {
classes = classes + ',.' + $(checkbox).prop('class').replace(' ', ',.');
});
$('.table').on('click', classes.slice(1), function() {..});
答案 2 :(得分:0)
假设你的元素有一个类,例如" someClass",那么你可以:
将数据添加到dom并添加以下代码:
$('.table').on('click', ".someClass", function() {..});