.one()不';不要像jquery.com建议的那样首次使用
我已经研究了如何根据自己的需要使用.one(),并让它在每个类选择器实例中正常工作,其中只显示一次。但是在jQuery.com上,它声明了以下内容将起作用,如果单击一次,那么如果使用相同的类选择器单击另一个元素,它将不会再次运行。然而,这对我不起作用。我在一个页面上有并且需要相同的特定类选择器 以下是jQuery.com给出的代码作为示例:.one()不';不要像jquery.com建议的那样首次使用,jquery,status-bydesign,Jquery,Status Bydesign,我已经研究了如何根据自己的需要使用.one(),并让它在每个类选择器实例中正常工作,其中只显示一次。但是在jQuery.com上,它声明了以下内容将起作用,如果单击一次,那么如果使用相同的类选择器单击另一个元素,它将不会再次运行。然而,这对我不起作用。我在一个页面上有并且需要相同的特定类选择器 以下是jQuery.com给出的代码作为示例: $("#foo").one("click", function() { alert("This will be displayed only once.")
$("#foo").one("click", function() {
alert("This will be displayed only once.");
});
$("body").one("click", ".foo", function() {
alert("This displays once for the first .foo clicked in the body.");
});
上面的第二个似乎不像上面说的那样有效。有人知道如何让它真正发挥作用吗。我可以在多个地方使用.foo,但该函数仅在单击其中一个.foo后显示一次。当单击另一个.foo时,它将不再运行该函数?非常感谢您提供的任何帮助/建议。如本评论中所述,这是。当读取正确时(例如,它不是写得很好),处理程序将只为匹配选择器的第一个元素触发一次 要使每个
.foo
元素不超过一次,您必须自己执行此操作(注意,我们已从使用one()
切换到on()
,并自行处理速率限制
$("body").on("click", ".foo", function() {
var self = $(this);
if (!self.data('fired')) {
self.data('fired', true);
alert("This displays once for each .foo clicked in the body.");
}
});
您可以试试这个:
$(function(){
$(".foo").one("click",function(event) {
alert("This displays once for the first .foo clicked in the body.");
});
});
这将只点击.foo
和警报一次
。如果不重新加载而再次点击,警报将不会显示
fiddle:它按预期工作。文档在这里写得非常糟糕,令人困惑,但它做到了alert中所说的:
alert(“第一次显示一次。foo在正文中单击”);