Jquery 如何将特定的.on选择器传递到函数中
我有两个相同代码的版本。第一个版本非常好,但不适用于新加载的内容Jquery 如何将特定的.on选择器传递到函数中,jquery,function,selector,Jquery,Function,Selector,我有两个相同代码的版本。第一个版本非常好,但不适用于新加载的内容 // Do some fancy ajax loading and URL rewriting when link is clicked var linkButton = $(".jsHistory a"); linkButton.on("click", function() { // If link is already selected do nothing if($
// Do some fancy ajax loading and URL rewriting when link is clicked
var linkButton = $(".jsHistory a");
linkButton.on("click", function() {
// If link is already selected do nothing
if($(this).parent().hasClass("selected")) {
return false;
// Else load new content and update URL
} else {
linky = $(this).attr("href");
history.pushState(null, null, linky);
showActiveLink();
loadContent(linky);
return false;
}
});
在第二个版本中,我需要所有与单击的特定链接按钮相关的内容,我认为它会起作用。不过,我正在努力让选择器通过
// Do some fancy ajax loading and URL rewriting when link is clicked
var linkButton = $(".jsHistory a");
$(document).on({
click: function() {
If link is already selected do nothing
if($(this).parent().hasClass("selected")) {
return false;
// Else load new content and update URL
} else {
linky = $(this).attr("href");
history.pushState(null, null, linky);
showActiveLink();
loadContent(linky);
return false;
}
}
}, linkButton);
有人知道我是如何做到这一点的吗?如果我像我所想的那样接近于做到这一点的话?谢谢你的时间。快到了。您需要在文档中为新创建的元素调用它,就像在第二个元素中一样,但是还应该将选择器传递给on函数。这样,将只接收来自该选择器的事件,“This”元素将成为链接
$(document).on('click', '.jsHistory a', function(){
var linkButton = $(this);
//...
});
似乎on()
只接受委派事件处理程序的字符串,而不是jQuery对象,因此您必须执行以下操作:
$(document).on({
click: function() {
if( !$(this).parent().hasClass("selected") ) {
var linky = $(this).attr("href");
history.pushState(null, null, linky);
showActiveLink();
loadContent(linky);
}
return false;
}
}, '.jsHistory a');
OP在最后传递选择器,这在使用地图时是正确的。在JSFIDLE上,尝试单击页面上的任意位置。您需要传递选择器而不是查询的元素:没错,您不能像那样将jQuery对象传递给
on()
,只能传递字符串。我以前都没注意到。非常感谢所有的帮助。这个答案解决了我的问题。我想我现在明白了。我会做一点实验,以便将来能理解它。你是最棒的!