1

次のスクリプトを実行すると、アラートに値が 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>

要素のデータに 2 つの値を格納するにはどうすればよいですか? 多分私は配列を送ることができますか?

4

2 に答える 2

1

objectまたはとして設定できますarray

 $('<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 に答える
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 に答える