的preventDefault(); jquery孩子受到影响

时间:2014-08-25 10:50:32

标签: jquery html preventdefault

我检查了相关的答案,但无法适应解决方案,所以需要你的帮助。我希望preventdefault();仅适用于父元素,但这里适用于所有内容

<ul class="links">
        <li><a href="#"><b>Accueil</b></a></li>
        <li>
            <a href="#"><b>Liste serveurs</b></a>
                <ul class="sub">
                    <li><a href="#"><b>sub 1</b></a></li>
                    <li><a href="#"><b>sub 2</b></a></li>
                </ul>
        </li>
</ul>

JS

$('.links > li').on('click',function(noway) {
        noway.preventDefault();

});

目标是当我点击倾听服务员 .sub出现时,但是当我点击 sub 1 时,没有任何反应。我想转到第1个链接。

编辑:我没有得到它,我觉得这是完全错误的,但它确实有效。

$('.links > li').on('click',function(noway) {
            if($(this).attr("class") === "sub") { noway.preventDefault(); }

    });

2 个答案:

答案 0 :(得分:2)

尝试最基本的方式....为什么要让它变得复杂!!

$('ul.links > li > a').click(function(event ) {
        event.preventDefault();
});

demo

含义:

preventDefault()仅适用于a的直接后代li,此li应为ul.links的直接后代

答案 1 :(得分:0)

这是有效的

<ul class="links">
    <li><a href="http://www.google.com"><b>Accueil</b></a></li>
            <li>
                <a href="#"><b>Liste serveurs</b></a>
                    <ul class="sub">
                        <li><a rel="1" href="http://www.google.com"><b>sub 1</b></a></li>
                        <li><a rel="1" href="#"><b>sub 2</b></a></li>
                    </ul>
            </li>
    </ul>

$(document).ready(function(){
    $('a').click(function(noway) {
                if($(this).attr("rel")!="1")
                noway.preventDefault();
    })
 });