委托需要指定元素和选择器。 我有一个正则表达式过滤器
$(".R, .G").filter(function () {
return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
})
我希望使用delegate绑定使用click()创建的已过滤元素。代码应该是
$(".R, .G").filter(function () {
return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
}).delegate("?", "click", function(){...});
滤出的元素是我想要绑定的。我应该为选择器指定什么? “这个”? “空”?
我无法强调代表与之间的区别。建议的人请尝试区别
$("p").on("click", function () {
$(this).text("clicked");
});
$("button").click(function () {
$(this).after($("<p>").text("hellowld;|"))
});
和
$("body").delegate("p", "click", function () {
$(this).text("clicked");
});
$("button").click(function () {
$(this).after($("<p>").text("hellowld;|"))
});
上次修改: 作为nnnnnn,on和delegate是相同的,我想。
经过对所有解决方案的测试后,只有Arun P Johny的解决方案在这里工作。
答案 0 :(得分:2)
您可能必须编写自定义表达式来过滤它
jQuery.expr[':'].mycustom = function(elem) {
return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec(elem.href);
};
$(document).delegate('.R:mycustom, .G:mycustom', 'click', function(){
console.log('clicked', this.href);
return false;
})
演示:Fiddle
或.on()
:Demo
答案 1 :(得分:1)
编辑:
所以,这里有一个方法,它会为它添加一个类,称为“myClass”,现在你可以使用"myClass"
作为on
事件,并且应该适用于任何新创建的元素。
$(".R, .G").filter(function () {
return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
}).addClass("myClass");
$("body").on("click", ".myClass", function(event) {
// Do something...
});
所以,也许这会起作用,也许不会......我不知道,但是如果你为所有匹配的元素添加一个名为myClass
的类,它现在应该可以通过类来操作了。您可能希望在函数中触发过滤器代码,并在需要调用该函数时调用该函数以重新填充页面上的“myClass”类元素。
答案 2 :(得分:0)
怎么样?
$(".R, .G").filter(function () {
return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
}).on("click", function(){...});