繁体   English   中英

如果元素在数组中具有属性值,则将其隐藏

[英]Hide element if it has an attribute value within an array

我要实现的目标是隐藏特定的div,如果它的指定属性与数组中的值匹配。

使用的信息将是动态的,需要隐藏的div可能会更改。 因此,它必须是可扩展的。

到目前为止,我所拥有的只是获取属性并将它们放入数组中。 然后,我将放入该数组的内容与另一个指定需要隐藏哪些div的数组进行匹配。 如果divs属性匹配,则隐藏该div,否则让div渲染。

现在,在隐藏div时我一无所获。

这是代码

 var matching = ['2', '3']; var mids = []; $('.merch-tile').each(function(i, e) { mids.push($(e).attr('m_mid')); }); //alert(mids); for (var c1 = 0; c1 < mids.length; c1++) { //alert('running'); var nm_arg = matching[c1]; //alert('still running'); if ($.inArray(nm_arg, mids) === -1) $('.merch-tile').hide(); alert('something matches'); } $(document.body).append(mids); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <div class="merch-tile" m_mid="1">Tile 1</div> <div class="merch-tile" m_mid="2">Tile 2</div> <div class="merch-tile" m_mid="3">Tile 3</div> 

您可以

var matching = ['2', '3'];  

$('.merch-tile').filter(function (i, e) {
    return matching.indexOf($(this).attr('m_mid')) > -1
}).hide();

 var matching = ['2', '3']; $('.merch-tile').filter(function (i, e) { return matching.indexOf($(this).attr('m_mid')) > -1 }).hide(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="merch-tile" m_mid="1">Tile 1</div> <div class="merch-tile" m_mid="2">Tile 2</div> <div class="merch-tile" m_mid="3">Tile 3</div> 

不需要mids数组。 只需遍历DOM元素,测试属性是否在数组中。

我也听不懂$(document.body).append(mids)的结尾mids不是HTML,而是一个数组。

我还用data-mid替换了您的自定义属性。 data-XXX属性保留供程序员用作扩展。

如果你想隐藏数组中的DIV,你应该测试!= -1 ,而不是== -1

 var matching = ['2', '3']; var something_matches = false; $('.merch-tile').each(function() { if ($.inArray($(this).attr('data-mid'), matching) != -1) { $(this).hide(); something_matches = true; } }); if (something_matches) { alert('something matches'); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <div class="merch-tile" data-mid="1">Tile 1</div> <div class="merch-tile" data-mid="2">Tile 2</div> <div class="merch-tile" data-mid="3">Tile 3</div> 

当心使用的.data('mid')而不是.attr('data-mid') .data()以整数形式返回值,因为有效JSON的属性值被解析为JSON,但matching包含字符串。

看你的代码:

if ($.inArray(nm_arg, mids) === -1)
    $('.merch-tile').hide(); // Look at here,you hide all, because of your have class name

alert('something matches');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM