Javascript 选择器以查找属性大于给定值的最近DOM元素
我在AJAX之后创建了如下表: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后,我想隐藏
<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();
});
};
});