2015-04-17 3 views
2

Я пытаюсь найти тег, который имеет атрибут data-direction. Так или иначе, это всегда неопределенно. То, что я пытаюсь сделать, это получить значения data-direction и data-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); 

EventListener

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

Вы добавляете 'row' в DOM в любой момент? – 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. – tlq

+0

Можете ли вы показать пример рабочего кода (или в вашем случае, почти рабочий) вашего примера в примере jsfiddle.net? Если 'tr' не является дочерним элементом вашего $ elem, зачем использовать' find() 'на нем? Может быть, вы могли бы попробовать просто 'var tr = $ ('tr [data-cellId]')' вместо этого? –

Смежные вопросы