我正在尝试阻止WordPress中菜单项的默认点击操作。我可以将类noclick添加到菜单项,但该类位于-li-元素上。
<li class="noclick"><a href="http://google.com">Google</a></li>
我的第一次尝试是:
<script type='text/javascript'>
$('.noclick').click(function(e) {
e.preventDefault();
});
</script>
然后我意识到我需要针对-a-元素,我不知道该怎么做。非常感谢任何帮助。
答案 0 :(得分:2)
我看到的唯一问题是您的代码不在dom ready处理程序
中jQuery(function ($) {
$('.noclick').click(function (e) {
e.preventDefault();
});
})
来自a
元素的点击事件将传播到li
元素,以便您可以为li
元素注册处理程序,然后在该元素中调用preventDefault()
答案 1 :(得分:2)
点击它时,LI元素没有默认操作,锚点
$('.noclick a').click(function(e) {
e.preventDefault();
});
wordpress使用noConflict模式作为默认值,这意味着$未定义,所以
jQuery(function($) {
$('.noclick a').click(function(e) {
e.preventDefault();
});
});
答案 2 :(得分:0)
为什么不:
<script type='text/javascript'>
$('.noclick a').click(function(e) {
e.preventDefault();
});
</script>
这会定位a
元素,这些元素是具有类noclick
的元素的子元素
答案 3 :(得分:0)
确保使用$ function这样的范围是安全的:
jQuery(function($) {
...
});
然后,如果你想阻止对这类特定菜单项的默认点击操作,你最好试试这个:
$(".noclick>a[href*='http://google.com']")
或
$(".noclick a[href*='google.com']")
然后如果您真的想要阻止所有点击操作,那么:
jQuery(function($) {
if($(".noclick>a[href*='http://google.com']").length>1){
$(".noclick>a[href*='http://google.com']")[0].onclick = function(){
return false;
}
}
else{
//it means there is something wrong with your query
}
});
这将禁用所有操作,即使使用jQuery e.preventDefault();