2013-08-26 27 views
0

我使用:选择独家CSS在特定情况下

$(".header.nav.nav-user").click(function(){}); 

但是,当我更改CSS为“.header .nav .disable .nav-user”,我不想触发click事件。

但是在这种情况下,当css更改为".header .nav .disable .nav-user"时,$(".header.nav.nav-user")也会触发。

我该如何排除这种情况?

我已经试过这样的:

$(".header.nav.nav-user :not(.disable)") 

$(".header.nav.nav-user").not(".disable"), 

但两次都未能取得预期的效果。

请告诉我如何做到这一点。

感谢您的帮助!谢谢。

更新:形势 有时是:(我想触发点击事件)

<div class="header"> 
    <div class="nav"> 
     <dt class="nav-user"> 
     </dt> 
    </div> 
</div> 

,有时是:(我不想触发点击事件)

<div class="header"> 
    <div class="nav"> 
    <dl class="disable"> 
     <dt class="nav-user"> 
     </dt> 
    </dl> 
    </div> 
</div> 

和更改是使用其他JavaScript,而不是更改该代码。

+0

$( '禁用')上( “点击”,功能。 (){return false});应该做的伎俩。 – ninty9notout

+0

在这里工作很好:http://jsfiddle.net/IrvinDominin/6zjP9/,可以是一个传播问题?是div的元素后裔,并且点击事件会冒泡? –

+0

它可能是因为你可能appying.disable类而不是禁用,否则你的代码,如果罚款检查。你的班级 –

回答

0

试试这个

$(".header.nav.nav-user").not(":disable") 
+0

它不会像我期望的那样工作 –

+0

因此您可以每次传递标志变量以检查选择器何时更改它不触发。触发器部分在if条件使用的情况下标志真正的功能触发否则没有 –

0

你需要,当你添加一个类的禁用

例如添加禁用属性:

$('.btn').click(function() { 
    alert('clicked'); 
    $('.btn').addClass('disable'); 
    $('.disable').attr('disabled', 'disabled'); 
}); 

这将禁用与“禁用链接'

+0

禁用未禁用,我认为你不明白我的问题。 –

+0

@ SAM的解决方案是正确的。删除空间,它应该工作得很好。 :)虽然我不认为它会工作,如果它动态添加的禁用类。 – achakravarty

0

@dude,您正确的是:

$(".header.nav.nav-user :not(.disable)") 
不同之处在于不应该有在导航用户之间的任何空间

和:不,

$(".header.nav.nav-user:not(.disable)") 

Fiddle

+0

谢谢,但也许我没有描述清楚,我会更新我的问题 –