2015-12-03 49 views
0

我想在jQuery中使not運算符工作。它根本不工作。jQuery - 不是運營商沒有按預期工作

懸停應在容器ca工作,但它不應該其子容器上工作noHover

FIDDLE HERE

我的HTML結構:

<div class="ca" style="height:40%"> 
    <div class="imageContainer"> 
     <span class="hoverEffect">Some Image</span> 
     <span class="noHover">NH</span> 
    </div> 
    <div class="showContainer"> 
     <span>New Image</span> 
    </div> 
</div> 

的jQuery:

$('.ca').not('.noHover').hover(function() { 
    $('.imageContainer', this).hide(); 
    $('.showContainer', this).show(); 

}, function() { 
    $('.imageContainer', this).show(); 
    $('.showContainer', this).hide(); 
}); 
+3

「不工作」 是沒用的。你需要解釋你想要的代碼做什麼,以及它在做什麼,你不想做什麼(或者做什麼不是你想做的事)。你想瞄準'.hoverEffect'嗎? – Amadan

+0

你想要這個 - http://jsfiddle.net/qsLg1ry5/5/ –

+0

@Amadan更新了問題 – user2281858

回答

1

使用不同的選擇ORS和背景:

$('.ca span:not(.noHover)').hover(function() { 
    $('.imageContainer', $(this).closest('.ca')).hide(); 
    $('.showContainer', $(this).closest('.ca')).show(); 

}, function() { 
    $('.imageContainer', $(this).closest('.ca')).show(); 
    $('.showContainer', $(this).closest('.ca')).hide(); 
}); 

考慮到問題的更新,你可能要爲元素的處理程序附加到一個不同的選擇:

'.ca, .ca *:not(.noHover)' 
0

jQuery的not從匹配的元素集合中刪除元素。 .noHover不是匹配元素$('.ca')的集合。你可以像下面這樣做。

$('.ca').hover(function (e) { 
    if(e.target.className=='hoverEffect'){ 
     $('.imageContainer', this).hide(); 
     $('.showContainer', this).show(); 
    }  
}, function() { 
     $('.imageContainer', this).show(); 
     $('.showContainer', this).hide(); 
}); 

JS小提琴:http://jsfiddle.net/qsLg1ry5/6/