我正在使用jQuery 1.4.3。
我有一些div中有微数据,我试图通过jQuery循环访问它们。这些div的输出很像行和列。
<div data-row="1" data-col="1">
<div data-row="1" data-col="2">
<div data-row="1" data-col="3">
<div data-row="2" data-col="1">
<div data-row="2" data-col="2">
<div data-row="2" data-col="3">
<div data-row="3" data-col="1">
<div data-row="3" data-col="2">
<div data-row="3" data-col="3">
我试图遍历每一行并获得该行中每个div的最大高度(尽管我并没有完全按照此代码执行)。使用此代码,我只希望能够循环遍历有多少行。
这样可以产生三个警告&#34; 1&#34;:
// ACCESS THE HEIGHT OF EACH CELL
$("[data-row='1']").each(function() {
var R = $(this).attr("data-row");
alert(R);
});
我希望看到它运行的时候是&#34; 1&#34;的三个警报,然后是&#34; 2&#34;的三个警报,接着是&#34; 3&#34的三个警报;。当代码&#34;运行&#34;时,我没有收到任何错误。没有警报被抛出。这不起作用:
$("[data-row>='1']").each(function() {
var R = $(this).attr("data-row");
alert(R);
});
这段代码有什么问题?为什么找不到数据行值为1或更大的行?
答案 0 :(得分:3)
尝试:
$("[data-row]").each(function() {
var R = $(this).attr("data-row");
alert(R);
});
因为data-row
是一个完整的属性,所以你可以指定它来遍历所有属性而不管它有什么价值。
答案 1 :(得分:1)
您看到的问题是因为>=
不是有效的CSS属性选择器比较。如果要为具有属性集的任何元素运行该方法,可以尝试:
$('[data-row]').each(function(){
var R = $(this).attr('data-row');
alert(R);
});
要查看有效的属性选择器,请查看W3 - Attribute Selectors
答案 2 :(得分:1)
我不相信jQuery有一个大于或等于某个值的选择器。我想你想要的是:
$("[data-row]").each(function() {
var R = $(this).attr("data-row");
alert(R);
});
答案 3 :(得分:1)
HTML属性读取为字符串,而不是整数。此外,according to the jQuery docs,属性值应在选择器中引用(因为它们是字符串)。
这就是为什么$("[data-row=1]")
无效,$("[data-row='1']")
无效。
$("[data-row>='1']")
不起作用,因为>=
不是属性选择器。
要获得data-row >= 1
的div,你必须使用filter
,并检查data-row
的值(ps你可以$("[data-row]")
来获取所有div与该属性无关的值。)
$("[data-row]").filter(function(){
return parseInt($(this).data('row'), 10) >= 1;
})
注意:jQuery可以使用.data
来获取data-*
属性,而不是.attr
。
答案 4 :(得分:0)
$("[data-row='1']")
只有前三行与此选择器匹配。
答案 5 :(得分:0)
怎么样:
$('[data-row=1], [data-row=2], [data-row=3]').each(function() {
var R = $(this).attr("data-row");
alert(R);
});
答案 6 :(得分:-2)
正确的签名是:
$("[data-row='1']").each(function(index, item) {
});
抱歉,忘了他们,更多的是需要纠正的匿名功能签名。