如何使用each()循环并获取值?

时间:2012-02-10 19:57:47

标签: jquery

我正在使用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或更大的行?

7 个答案:

答案 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) {
});

抱歉,忘了他们,更多的是需要纠正的匿名功能签名。