2014-01-15 44 views
0

我試圖從我的LI傳輸信息jQuery的功能,但我得到了一個未定義:爲什麼不能將信息從html li標籤傳輸到jQuery函數?

的HTML代碼

"<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函數,但沒有更改(itemid是LI屬性)

我是否缺少某些東西?

回答

2

使用data-* attributesjQuery .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- *是將數據作爲元素屬性傳遞的正確方法。

+0

謝謝你給予解釋。 – user2560521

2

我喜歡jammykam's solution,但如果你不想改變你的HTML,你可以使用jQuery的.attr()方法得到的itemid屬性的值:

array.push(this.id, $(this).attr('itemid')); 
相關問題