使用jQuery在下拉菜单中使父链接无法点击

时间:2009-09-26 14:01:12

标签: javascript jquery wordpress

我有一个通过WordPress动态添加的下拉菜单。它看起来像这样:

Pictures
    Sea
    Forest
    City

“海洋”,“森林”和“城市”是“图片”作为父类别的类别。

我的问题是:

如何使“图片”类别无法点击?

我用jQuery做了这个:

$(document).ready(function(){
    //Make parent links unclickable
    $(".page-item-3").click(function(){ 
        return false;
    });
});

...这与CSS:

li.page-item-3 a {
    cursor:default;
}

.page-item-3 ul li a {
    cursor: pointer;
}

Markup看起来像这样:

<div id="menu" class="jqueryslidemenu">
    <ul>
        <li class="cat-item cat-item-1 current_page_item"><a href="http://blabla" title="Blabla">Blabla</a></li>
        <li class="page_item page-item-2"><a href="http://blabla" title="Blabla">Blabla</a>
            <ul>
                <li class="page_item page-item-28"><a href="http://blabla" title="Blabla">Blabla</a></li>
                <li class="page_item page-item-30"><a href="http://blabla" title="Blabla">Blabla</a></li>
                <li class="page_item page-item-39"><a href="http://blabla" title="Blabla">Blabla</a></li>
            </ul>
        </li>
        <li class="page_item page-item-3"><a href="http://blabla" title="Blabla">Blabla</a>
            <ul>
                <li class="page_item page-item-5"><a href="http://blabla" title="Blabla 1">Blabla 1</a></li>
                <li class="page_item page-item-7"><a href="http://blabla" title="Blabla 2">Blabla 2</a></li>
                <li class="page_item page-item-9"><a href="http://blabla" title="Blabla 3">Blabla 3</a></li>
                <li class="page_item page-item-11"><a href="http://blabla" title="Blabla 4">Blabla 4</a></li>
                <li class="page_item page-item-13"><a href="http://blabla" title="Blabla 5">Blabla 5</a></li>
            </ul>
        </li>
        <li class="page_item page-item-15"><a href="http://blabla" title="Blabla">Blabla</a>
            <ul>
                <li class="page_item page-item-222"><a href="http://blabla" title="Blabla">Blabla</a></li>
                <li class="page_item page-item-224"><a href="http://blabla" title="Blabla">Blabla</a></li>
                <li class="page_item page-item-226"><a href="http://blabla" title="Blabla">Blabla</a></li>
            </ul>
        </li>
        <li class="page_item page-item-17"><a href="http://Blabla" title="Blabla">Blabla</a></li>
        <li class="page_item page-item-36"><a href="http://Blabla" title="Blabla">Blabla</a></li>
    </ul>
</div>

这几乎可以正常工作但是jQuery代码也使得所有下拉链接都无法点击。

如果有人知道在悬停“图片”链接时如何删除状态栏网址会很棒。但我不认为可以在现代浏览器中使用Safari och Firefox吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

我不知道你有什么控制因为Wordpress但你遇到了这个问题,因为所有内容都包含在标题列表项(page-item-3)中,你取消了对这个项目的点击。如果您可以将类应用于标题链接本身,则可以直接将jQuery应用于该类。

很遗憾,你不能说“.page-item-3 a”,因为这适用于列表中的所有链接。

重新编辑 - 这应该选择列表中的第一个链接并取消其中的点击值。您可能需要为每个“标题”链接应用此功能。

$(".page-item-3 a:first").click(function() {
   return false;
}   

答案 1 :(得分:1)

$(".page-item-3").children("a").click(function(e) {
   e.preventDefault();
});

*****或CSS *****

.unclickable {
   z-index:-1;
}


$(".page-item-3").children("a").addClass("unclickable");

答案 2 :(得分:0)

只需用#替换href属性值即可。这样当用户点击它时,页面转到#,这是他们所在的页面,没有任何反应。保留你编写的CSS,这样当手指针悬停时它就不会出现,但删除了jQuery代码。

使用jQuery:

$(".page-item-3>a").attr("href", "#")

答案 3 :(得分:0)

试试这个:

$(document).ready(function(){
    //Make parent links unclickable
    $("div > ul > li > a").click(function(){ 
        return false;
    });
});

这将禁用列表中的所有第一个链接,而不需要类名。

答案 4 :(得分:0)

我用这个:

$j = jQuery.noConflict();
$j(document).ready(function(){
    //Make parent links unclickable
    $j("div[id='nav'] > ul > li > a ").removeAttr("href");
});