我正在尝试为具有两个具有不同值的特定属性的元素执行JQuery select函数。
(之所以如此,我可以选择已经改变的输入。)
但是,我似乎找不到任何显示这种情况的文档。
这是一个隐藏以这种方式选择的元素的测试,但就像我说的,我找不到合适的语法来使它工作。
我试过了:
"[value]!=[oldvalue]"
"[value!=[oldvalue]]"
"[value!=oldvalue]"
还有其他一些疯狂的事情都会失败。
有什么建议吗?
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("[value<>[oldvalue]]").hide();
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is another paragraph.</p>
<p value="2" oldvalue="1">This is a paragraph to go away.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
答案 0 :(得分:2)
您需要使用过滤器,因为逻辑对于单个选择器来说太复杂了。试试这个:
:8.4.0
答案 1 :(得分:1)
忽略示例中的无效HTML,您可以使用jQuery的filter
实现此目的:
> x <- c(1,2,2,3,3,3,4,4,4,4,1)
> y <- c(1,2,1,2,1,2,1,2,3,4,5)
>
> table(x)
x
1 2 3 4
2 2 3 4
> # x has 2 ones, 2 twos, 2 threes, 4 fours
>
> table(y)
y
1 2 3 4 5
4 4 1 1 1
> # y has 4 ones, 4 twos, 1 three, 1 four, 1 five
>
> table(x,y)
y
x 1 2 3 4 5
1 1 0 0 0 1
2 1 1 0 0 0
3 1 2 0 0 0
4 1 1 1 1 0
> # For example there are 2 cases when x is three and y is two at the same time
> # but 0 cases when x is two and y is three at the same time
$('[value][oldvalue]').filter(function() {
var $el = $(this);
return $el.attr('value') !== $el.attr('oldvalue');
});
var results = $('[value][oldvalue]').filter(function() {
var $el = $(this);
return $el.attr('value') !== $el.attr('oldvalue');
});
$('[value][oldvalue]').hide();
$(results).show();
答案 2 :(得分:1)
您可以定位共享这两个属性的所有元素,然后使用jQuery filter()
函数找到那些不匹配的元素:
$("button").click(function(){
// Find all elements that have both attributes
$('[value][oldvalue]').filter(function(){
// Filter those that do not match
return $(this).attr('value') !== $(this).attr('oldvalue');
}).hide();
});
答案 3 :(得分:1)
猜猜我和其他一些人在同一时间发布了这个帖子,但我在这里找到了一个有效的片段。
选择具有所需属性的所有元素,并使用filter()
将设置减少为具有不相等值的设置,如下所示:
$(document).ready(function() {
$("button").click(function() {
var els = $("[value][oldvalue]").filter(function(i) {
return $(this).attr('value') != $(this).attr('oldvalue');
}).hide();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p value="2" oldvalue="1">This is a paragraph to go away.</p>
<p value="2" oldvalue="2">This is a paragraph to <b>not</b> go away.</p>
<button>Click me</button>
&#13;