也许我认为这是错误的方式,但我试图在我的页面上淡出一些html元素,具体取决于通过同一页面上的复选框选择的标志。
页面上有很多<div class"bar">
。
每个bar div都会有一个“issueflag” - <div class"bar" data-issueflag="3">
“issueflag”的值将是......
的按位值1 - 条形码问题 2 - 缺少数据 4 - 提交的备注 ......加上等等。
因此,例如,如果“issueflag”值为3,则条形码具有“条形码问题”和“缺少数据”。
我的页面将有复选框,每个复选框都有一个值标志。
当修改复选框的状态时,我希望与选择不匹配的元素淡出,即那些淡入的元素。
希望这有助于了解我的目标...
http://jsfiddle.net/ETFairfax/Bj4Vb/
我的问题是如何在jQuery中进行按位选择?
任何帮助表示感谢。
标记
<h3>Make your selection</h3>
<input type="checkbox" id="checkboxBarcode" value="1" />Barcode Issue (1)
<br/>
<input type="checkbox" id="checkboxInputMissing" value="2" />Missing Input (2)
<br/>
<input type="checkbox" id="checkboxNotesSubmitted" value="4" />notes Submitted (4)
<br/>
<h3>Results</h3>
<div id="container">
<div class="bar issueflags1" data-issueflag="1">1</div>
<div class="bar issueflags2" data-issueflag="2">2</div>
<div class="bar issueflags4" data-issueflag="4">4</div>
<div class="bar issueflags7" data-issueflag="7">7</div>
</div>
的JavaScript / jQuery的
$("input:checkbox").click(function () {
var selectionSum = 0;
$("input:checkbox:checked").each(function () {
selectionSum += parseInt($(this).val(), 10);
});
var $bars = $("#container .bar");
$bars.fadeTo("fast", 1, function () {
if (selectionSum != 0) {
// This is wrong, but shows how I would like the UI to sort of behave (some fine tuning needed!)...
$bars.not(".issueflags" + selectionSum).fadeTo("slow", 0.5);
// I need something along the lines of a c#/linq query like:
// $("#container .bar").where(b => b.issueflag & selectionSum == 0).fadeTo("slow", 0.5);
}
});
});
CSS
#container {
width: 300px;
height: 300px;
}
.bar {
margin-top: 10px;
background-color: YellowGreen;
}
答案 0 :(得分:0)
试试这个:
$bars.filter(function() {
return (parseInt($(this).attr('data-issueflag')) & selectionSum) === 0;
}).fadeTo("slow", 0.5);