0

委托需要指定元素和选择器。我有一个正则表达式过滤器

$(".R, .G").filter(function () {
    return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
})

我想使用委托将动态创建的过滤元素与 click() 绑定。代码应该是

$(".R, .G").filter(function () {
    return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
}).delegate("?", "click", function(){...});

过滤掉的元素是我要绑定的。我应该为选择器指定什么?“这个”?“无效的”?

我不能足够强调代表和 on 之间的区别。建议的人请尝试两者之间的区别

$("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 的解决方案在这里工作。

4

3 回答 3

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;
})

演示:小提琴

或与.on()演示

于 2013-07-27T02:48:12.137 回答
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”类元素时调用该函数。

于 2013-07-27T02:31:36.357 回答
0

关于什么

$(".R, .G").filter(function () {
    return !/.+\.(gif|jpg|png|tiff|svg)$/i.exec($(this).attr("href"));
}).on("click", function(){...});
于 2013-07-27T02:25:42.187 回答