我想制作一个可以处理===,!==对元素进行排序的函数。我不知道该怎么做。请建议我该怎么做
的HTML
<div class="aa">1</div>
<div class="aa">2</div>
<div class="aa">3</div>
<div class="aa">4</div>
<div class="aa">2</div>
<div class="aa">6</div>
$ val = 2;
function getVal(div,symbol){
div.filter(function () {
return parseInt($(this).html(), 10)===$val; //i want to use passed symbol in place of ===
}).show();
}
getVal($('.aa'),'===')
演示http://jsbin.com/EzEREFU/2/
最佳答案
需要运用一些技巧;)
function getVal(div,invert) {
div.filter(function() {
return (parseInt($(this).html(),10) === $val) ^ invert;
}).show();
}
^
是XOR运算符。它应该是按位的,但是可以在布尔值上正常工作。使用方法:
getVal($(".aa"),false); // "==="
getVal($(".aa"),true); // "!=="
如果您希望能够传递“ ===”或“!==”,请尝试以下操作:
function getVal(div,symbol) {
var invert = symbol.charAt(0) != "=";
div.filter(function() {
return (parseInt($(this).html(),10) === $val) ^ invert;
}).show();
}
强制Vanilla JS解决方案:
function getVal(className,symbol) {
[].forEach.call(document.getElementsByClassName(className),function(elm) {
if( (parseInt(elm.firstChild.nodeValue,10) === $val) ^ invert)
elm.style.display = "block";
});
}
getVal("aa","==="); // show where equal
getVal("aa","!=="); // show where not equal
那是什么?较旧的浏览器? Psh,草皮他们。如果人们通过禁用Windows Update故意使我们的生活变得困难,那么他们就不应该拥有我们如此出色的网站。
关于jquery - 使单个函数来处理jquery中的==,!==,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20629846/