根据属性值隐藏div?

时间:2012-10-17 16:16:59

标签: javascript jquery plugins jquery-masonry

我希望改变某些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属性的menuref #menu1

点击menuref等于.pics的{​​{1}},会隐藏相关的imageref {{1}}也等于1.希望这样做感觉,任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

您可以使用css选择器进行此操作。

即:

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

编辑:

这将搜索他的属性'imageref'设置为'menuref'的所有元素,然后删除类图片并添加类图片隐藏。 如果它只是img标签的必要条件。然后你可以改变:

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

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

答案 1 :(得分: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 :(得分: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');
});