2015-04-17 80 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]')'而不是? –

相关问题