使用jQuery来防止<a> element based on parent <li> element with class</li></a>的点击功能

时间:2013-12-04 15:36:37

标签: jquery

我正在尝试阻止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-元素,我不知道该怎么做。非常感谢任何帮助。

4 个答案:

答案 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();

执行此操作也会被忽略