Jquery 优化表的结果:两个或多个逻辑语句

Jquery refine results of a table: two or more logic statements

本文关键字:两个 语句 优化 结果 Jquery      更新时间:2023-09-26

如果表的值与两个语句匹配,我想隐藏它们在我的 refine() 函数中,这两个语句单独工作,但如果它们一起运行,则第二个运行都会接管,

我想要一种方式说

如果语句 a AND 语句 b 为真,则同时执行

<html>
    <body>
    <select id="gender" name="gender"> 
    <option value="">Both</option>
    <option value="M">Male</option>
    <option value="F">Female</option>
    </select>
    <select id="region" name="region"> 
    <option value="">All Regions</option>
    <option value="East Midlands">East Midlands</option>
    <option value="Greater London">Greater London</option>
    <option value="Northern Ireland">Northern Ireland</option>
    <option value="North West">North West</option>
    <option value="North Midlands">North Midlands</option>
    <option value="Scotland">Scotland</option>
    <option value="South East">South East</option>
    <option value="South Midland">South Midlands</option>
    <option value="South West">South West</option>
    <option value="West Midlands">West Midlands</option>
    <option value="Yorkshire & North East">Yorkshire & North East</option>
    </select>
    <button id="button" onClick="refine()">Refine Results</button>
    </body>
    </html>
    <script>
    function refine(){
       var gender = document.getElementById('gender').value;
       var region = document.getElementById('region').value;
       $('#t01 tbody tr').each(function() {
        $(this).toggle($('td:eq(1):contains(' + gender + ')', this).length > 0);
      })
       $('#t01 tbody tr').each(function() {
        $(this).toggle($('td:not(:contains(' + region + ')', this).length > 0);
      })
    }
    </script>

编辑后:

想象一下这是一张桌子

M 大伦敦

F 大伦敦

M 西北

F 西北


如果用户选择"男性 + 西北

"

它只会显示

M 西北

如果我理解正确的话。这可能会对您有所帮助

    function refine(){
        var gender = document.getElementById('gender').value;
        var region = document.getElementById('region').value;
        $('#t01 tbody tr').each(function() {
            var firstMatch = $('td:eq(1):contains(' + gender + ')', this).length > 0;
            var secondMatch = $('td:not(:contains(' + region + ')', this).length > 0;
            if (firstMatch && secondMatch) {
                $(this).toggle(firstMatch);
                $(this).toggle(secondMatch);
            }
        })
    }

如果没有,请更具体。