为什么不能将信息从 html li tag 传输到 jQuery 函数?



我尝试将信息从我的LI传输到jQuery函数,但我没有得到定义:

网页代码

"<li id='" + obj[i].ID + "' itemid='"+obj[i].Name+"'>" + obj[i].Name + "</li>";//info from an array name obj, works fine in li.

jquery代码:

 var array = [];
            var $elem = $(this);
            $elem.each(function (i) {
                $('li', this).each(function (e) {
                    array.push(this.id,this.itemid); // this.id works, **this.item - undefined**                  
                });

我也尝试创建一个特殊属性来将我的信息从 li 传输到 jQuery 函数,但没有变化。(项 ID 是 LI 属性)

我错过了什么吗?

使用 data

-* 属性和 jQuery .data()

"<li id='" + obj[i].ID + "' data-itemid='"+obj[i].Name+"'>" + obj[i].Name + "</li>";

JavaSscript:

var array = [];
var $elem = $(this);
$elem.each(function (i) {
    $('li', this).each(function (e) {
        array.push(this.id, $(this).data('itemid'));
    });

this.itemid不是工作的原因是它不是一个有效的 html 属性。使用 data-* 是将数据作为元素属性传递的正确方法。

我喜欢

jammykam的解决方案,但是如果你不想改变你的HTML,你可以使用.attr()jQuery方法来获取itemid属性的值:

array.push(this.id, $(this).attr('itemid'));

最新更新