2012-10-17 68 views
0

我正在寻找改变某些div依赖于它们的属性值的类(隐藏)。
这里是我的代码,它可能使更多的意义,一旦你已经看到了这一点:根据属性值隐藏div吗?

jQuery('#menu1').click(function() { 
     jQuery([.attr('imageref')]!=[.attr('menuref')]).removeClass('pics').addClass('.pics-hidden').removeClass('pics').fadeOut(200); 
     jQuery('#projectimages').masonry('reload'); 
     }); 

所以我后是,如果你点击#menu1它会删除.pics具有相同imageref属性作为#menu1 atrribute menuref

所以点击#menu1具有menuref等于1,将隐藏有关.picsimageref也等于1
希望这是有道理的,任何帮助将不胜感激!

+1

您可以在小提琴中显示HTML结构吗? –

+0

你对这个语法的期望是什么? 'jQuery([。attr('imageref')]!= [。attr('menuref')])' –

回答

0

您使用attribute-equals selector,并连接到选择的menuref属性的值。

jQuery('#menu1').click(function() { 
     var menu = $(this).attr('menuref'); 
     jQuery(".pics[imageref='" + menu + "']").toggleClass('pics pics-hidden') 
               .fadeOut(200); 
     jQuery('#projectimages').masonry('reload'); 
}); 
+0

非常感谢你的所有建议,@ user1689607答案很好!关于这个代码的另一个小问题,因为它现在隐藏所有的图像与相关的'imageref',是否也可以隐藏所有的属性,但这一个? – user1374796

+0

@ user1374796:我不确定你的意思。你想隐藏'.pics'吗?或者'menuX'项目?或者,也许你的意思是用当前的'menuref'显示所有'.pics',并隐藏所有其他的? –

+0

是的,如果可能的话,我想用当前的menuref显示所有的.pics并隐藏所有其他的。 – user1374796

1

您可能会使用jQuery过滤器函数。

http://api.jquery.com/filter/

描述:减少匹配元素到那些选择匹配或传递函数的测试的。

var menuref = ("#menu1").attr('menuref') 
// Get all pics with an imageref attribute 
jQuery(".pics[imageref]") 
// Filter them 
.filter(function(){ 
    return $(this).attr('imageref') != menuref; 
}) 
// Do what ever you want e.g. remove the pics class 
.removeClass('pics') 
2

您可以使用CSS选择器,使这个。

即:

jQuery('#menu1').click(function() 
{ 
    jQuery('[imgeref="menuref"]').removeClass('pics').addClass('pics-hidden'); 
}); 

编辑:

这将搜索所有的元素至极他的属性附加伤害“imageref”设置为“menuref”,然后删除类图片和添加类图片隐藏。 如果它只是需要img标签。然后你可以改变:

jQuery('[imgeref="menuref"]') 

jQuery('img[imgeref="menuref"]') 
+0

多一点解释会很好。而且这些选择器并不特定于css3。 –

+0

确实:)我已经编辑 – Matias

+0

很好的答案! :) –