我想要实现的是隐藏特定的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>
答案 0 :(得分:0)
你可以
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();
&#13;
<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>
&#13;
答案 1 :(得分:0)
不需要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');
}
&#13;
<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>
&#13;
谨防使用.data('mid')
代替.attr('data-mid')
。 .data()
以整数形式返回值,因为有效JSON的属性值被解析为JSON,但matching
包含字符串。
答案 2 :(得分:-1)
看看你的代码:
if ($.inArray(nm_arg, mids) === -1)
$('.merch-tile').hide(); // Look at here,you hide all, because of your have class name
alert('something matches');