Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择器以查找属性大于给定值的最近DOM元素_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript 选择器以查找属性大于给定值的最近DOM元素

Javascript 选择器以查找属性大于给定值的最近DOM元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我在AJAX之后创建了如下表: <tr data-level=2> <tr data-level=3> <tr data-level=4> ..etc. <tr data-level=2> <tr data-level=3> <tr data-level=4> ..etc. 等 等 当然,在任何数据级别上都可能有许多单元格 我想将大于单击级别的所有行隐藏到小于单击级别的行。所以-单击data level=4后,我想隐藏

我在AJAX之后创建了如下表:

<tr data-level=2>
<tr data-level=3>
<tr data-level=4>
..etc.
<tr data-level=2>
<tr data-level=3>
<tr data-level=4>
..etc.

等
等
当然,在任何数据级别上都可能有许多单元格

我想将大于单击级别的所有行隐藏到小于单击级别的行。所以-单击data level=4后,我想隐藏data level>4的所有元素,直到到达data level<4的行。

你可以用

将匹配的元素集减少为与选择器匹配或通过函数测试的元素集

示例代码

使用

你可以用

将匹配的元素集减少为与选择器匹配或通过函数测试的元素集

示例代码

使用


这是另一个解决方案

编辑:抱歉,问题不清楚,此解决方案隐藏所有具有更大值的元素

HTML


您可以很容易地从该代码派生。

这里是另一个解决方案

编辑:抱歉,问题不清楚,此解决方案隐藏所有具有更大值的元素

HTML


你可以很容易地从这段代码中派生。

@AnoopJoshi,
.data()
为你做这件事you@AnoopJoshi,
.data()
为您做这件事感谢fiddle,我已经为我的示例修改了它。它隐藏了所有数字大于给定数据级别的行。我只想隐藏那些。。。最接近的,在整个页面上。问题就在这里—“因此-在我单击data level=4之后,我想隐藏data level>4的所有元素,直到我到达data level<4的行。”在您的解决方案中,在我单击element 3之后,隐藏level 4上的所有行。我只想要那些在到达另一个2级之前正在进行的。更新了我的解决方案,它至少会给你一个大概的想法。我相信这里会有人纠正我的错误。感谢fiddle,我已经为我的示例修改了它。它隐藏了所有数字大于给定数据级别的行。我只想隐藏那些。。。最接近的,在整个页面上。问题就在这里—“因此-在我单击data level=4之后,我想隐藏data level>4的所有元素,直到我到达data level<4的行。”在您的解决方案中,在我单击element 3之后,隐藏level 4上的所有行。我只想要那些在到达另一个2级之前正在进行的。更新了我的解决方案,它至少会给你一个大概的想法。我相信这里会有人纠正我。我已经更新了答案见演示我已经更新了答案见演示
$('tr[data-level]').on('click', function(){
    var level = $(this).data('level'); //Get level of clicked element
    $('tr[data-level]').filter(function(){
        return $(this).data('level') > level;
    }).hide();
})
$('tr[data-level]').on('click', function () {
    var level = $(this).data('level'); //Get level of clicked element
    var arr = [];
    $(this).nextAll('tr[data-level]').each(function () {
        if ($(this).data('level') > level) {
            arr.push($(this));
        } else if ($(this).data('level') == level) {
            return false;
        }
    });
    $.each(arr, function(){
        $(this).hide() 
    });
})
<table id="resultTable">
<tr data-level=2><td>2</td></tr>
<tr data-level=3><td>3</td></tr>
<tr data-level=4><td>4</td></tr>
<tr data-level=2><td>2</td></tr>
<tr data-level=3><td>3</td></tr>
<tr data-level=4><td>4</td></tr>
</table>
$(document).ready(function () {    
    $("tr","#resultTable").on("click",function() {
        var el = $(this);
        var clickedValue = parseInt(el.attr("data-level"),10);
        hideLargerThan(clickedValue); 
    });    
    var hideLargerThan = function(value) {
        $("tr","#resultTable").each(function() {
            var el = $(this);
            var myValue = parseInt(el.attr("data-level"),10);
            if(myValue > value)
                el.hide();
        });
    };
});