我想制作一个可以处理===,!==对元素进行排序的函数。我不知道该怎么做。请建议我该怎么做

的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/

10-11 20:29
查看更多