Jquery执行基于元素'的父标记

Jquery execute action based on element's parent tag

本文关键字:执行 于元素 元素 Jquery      更新时间:2024-06-04

我有以下内容:

<ul class="head clearfix">'
    <li class=""><strong><a href="/firmy" class="menuTabs">Katalog firm <span>(3516)</span></a></strong></li>
    <li class=""><a href="/produkty" class="menuTabs">Katalog produktów <span>(23752)</span></a></li>
    <li class=""><a href="/uslugi" class="menuTabs">Katalog uslug <span>(81)</span></a></li>
    <li class="last"><a href="/szkolenia" class="menuTabs">Katalog szkolen <span>(529)</span></a></li>
</ul>

我只需要在没有<strong>标记作为父标记的链接上执行鼠标悬停效果。所以在上面的例子中,我会跳过"Katalog-firm"链接,因为那个链接有一个标记作为父链接。

感谢

您的css选择器将是

ul.header > li > a.menuTabs:hover

定义悬停效果

如果你需要一些jquery功能,你可以使用

$('ul.header > li > a.menuTabs')

以获得这些元素

只需从选择器中筛选出具有强标记的父元素,并附加鼠标事件:

​$('ul.head li a')​.filter(function() {
    return !$(this).parent().is('strong');
}).on('mouseenter', function() {
    $(this).css('color','green');
});​

FIDDLE

这只能通过使用直接子选择器> 在CSS中定义

ul.head > li > a.menuTabs:hover 
{
   /* hover style */
}

您可以在jquery 中使用相同的选择器

$('ul.head > li > a.menuTabs')
$('.head').on('click', 'li > a', function(evt) {
    //do something
});

我建议,作为使用更具体的选择器(在大多数情况下可能是更好的选项)检查鼠标悬停事件中的父元素的替代方案:

$('a').on('mouseover', function(e){
    var that = this;
    if ($(that).parent().is('strong')) {
        return false;
    }
    else {
        // do stuff.
    }
});
$('.head > li > .menuTabs').mouseover(fucnction () {
  // code here
});

请这样使用。

ul li>a:hover
{
background-color:black;
}​