如何使用jQuery's .data()函数保存两个变量?

How can I save two variables with jQuery's .data() function?

本文关键字:保存 两个 变量 函数 何使用 data jQuery      更新时间:2023-09-26

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

<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>

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

可以设置为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/上查看

使用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