2015-04-17 52 views
2

我正在嘗試查找具有data-direction屬性的標籤。不知何故,它總是未定義的。我想要做的是得到data-directiondata-cellId的值。 有什麼建議嗎?如何查找具有數據屬性的標籤

var row = $('<tr data-cellId="' + cell.fatherId + '" data-direction="' + cell.direction + '"/>'); 
var nameColumn = $('<td class="port-name-col" data-cellId="' + cell.fatherId + '">' +cell.value.name + '</td>'); 
var btnColumn = $('<td class="port-btn-col"><button type="button" title="Remove" class="btn btn-default btn-xs x-button-icon btn-delete-port"><span class="glyphicon glyphicon-trash"></span></button></td>'); 
row.append(nameColumn); 
row.append(btnColumn); 

事件監聽

$(document).off('click', '.btn-delete-port').on('click', '.btn-delete-port', function (event) { 
    var elem = event.target || event.srcElement; 
    //find tr element that has cellID attribute 
    var tr = $(elem).find("tr.data-cellId"); 
    alert($(elem).parent().parent().html()) 
}); 
+0

嘗試使用['.attr()'](HTTPS ://api.jquery.com/attr/) – Und3rTow

+2

使用這個'$(elem).find(tr [data-cellId]);' –

+0

您是否在任何點向DOM添加'row'? – Curt

回答

9

問題在於這一行:

var tr = $(elem).find("tr.data-cellId"); 

.data-cellId部選擇基於與該類的元件上。爲了尋找一個屬性,在你選擇使用[data-cellId]

var tr = $(elem).find("tr[data-cellId]"); 

然後,爲了獲得該屬性的值,你可以使用:

tr.attr('data-cellId'); 
+0

毫米它看起來像我以錯誤的方式問我的問題。當我檢查alert(tr.html())時,我仍然未定義。事情是「tr [data-cellId]」不是$(elem)的子元素。但絕望地我需要找到具有data-cellId的tr標籤。 – tlq

+0

你可以在jsfiddle.net示例中顯示工作(或者在你的情況下,幾乎可以工作)你的代碼的例子嗎?如果'tr'不是你的$ elem的孩子,爲什麼甚至使用'find()'呢?也許你可以嘗試'var tr = $('tr [data-cellId]')'而不是? –

相關問題