jQuery - 选择除特定子项之外的类

时间:2012-04-30 10:08:53

标签: javascript jquery select except

我正在使用此处的照片滑块代码:http://tympanus.net/codrops/2010/10/07/slider-gallery/并尝试修改它,以便图片下方的链接在新窗口中加载。

例如:

<div class="content">
<div><a href="#"><img src="http://imageurl" alt="largeimageurl" /></a></div>
<div class="caption"><a target="_blank" href="image.php?id=someid&svc=somesvc" rel="nofollow">More Info</a></div>
</div>

我用javascript文件尝试了各种不同的东西,目前读取:

$fp_content_wrapper.find('.content').bind('click',function(e){
    var $current = $(this);
    //track the current one
    current = $current.index();
    //center and show this image
    //the second parameter set to true means we want to
    //display the picture after the image is centered on the screen
    centerImage($current,true,600);
    e.preventDefault();
    });

我需要做的是改变第一行,使其正常选择,但不对带有链接的字幕div应用任何内容,以使其表现正常。

我知道SO上有类似的问题,但我尝试过大多数建议的问题。我对JS没有多少经验,所以很容易让我做错了。

感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

试试这个:

$fp_content_wrapper.find('.content>*:not(.caption)').bind('click',function(e) .....

发生的事情是您选择了内容标记,而不是想要选择内部标记,除了.csption类的内容。 '&GT;'表示直接位于下方的元素,'*'表示全选。所以它转化为“直接选择.content之下的所有内容。不是一个.caption类”。

如果继续使用jquery,那么在研究选择器时这是值得的。

祝你好运

答案 1 :(得分:1)

尝试:

$fp_content_wrapper.find('.content:not(.caption)').bind("click", ...

答案 2 :(得分:0)

试试这个詹姆斯

$fp_content_wrapper.find('.content').bind('click',function(e){     
   if(!$(this).attr('class'))   
   {
     var $current = $(this);     
     //track the current one     
     current = $current.index();     
     //center and show this image     
     //the second parameter set to true means we want to     
     //display the picture after the image is centered on the screen     
     centerImage($current,true,600);     
     e.preventDefault();  
   }
}); 

有一种更简洁的方法可以做到这一点,但这应该做到。这应该确保只有没有类的div运行该函数。如果你想在另一个div上使用一个类,显然要小心或改变逻辑。

干杯

修改

再次查看代码后,您还可以测试div中的超链接,以检查它是否具有alt属性或alt属性是什么。这将是一个更具体的测试。