1

当我执行以下脚本时,警报中只显示一个值:

<script>
    window.onload = function () {
        var num = 15;
        for (var i = 0; i < 10; i++) {
            $('<tr style="background-color: aqua" id = ' + i + '></tr>').appendTo("table");
            for (var j = 0; j < 10; j++) {
                num++;
                $('<td id ='+num+'></td>').appendTo("#"+i);
                $('<button>S</button>').data("field", i, j).appendTo("#" + num);
            }
        }
        $('td').on('click', 'button', function () {
            var d = $(this);
            alert(d.data("field"));  // here alert shows one variable
        });
    }
</script>

如何在元素的数据中存储两个值?也许我可以发送一个数组?

4

2 回答 2

1

您使用 jQuery数据方法存储的数据可以是一个对象。所以你可以这样存储值:

$('<button>S</button>').data("field", { i: i, j: j});

然后像这样再次读出它们:

var d = $(this),
    field = d.data("field");
alert(field.i);
alert(field.j);

您还应该考虑使用 jQuery 的ready方法而不是window.onload.

于 2013-03-29T05:54:36.380 回答
1

您可以将它们设置为objectarray

 $('<button>S</button>').data("field", [i,j] ).appendTo("#" + num);

并提醒他们使用

alert( d.data("field").join(',') );  // here alert shows one variable

根据评论“实际上不需要调用 join(","),由数组实现的 toString() 覆盖已经执行了此操作。 ”。所以你们都可以简单地

alert( d.data("field") );

在http://jsfiddle.net/xhPjh/上检查这个

于 2013-03-29T06:06:05.127 回答