我正在尝试按数据属性值获取<li>
元素(data-event_id = 1282)。
<div id="timeline">
<ul>
<li class="timeline-event">
<div>Event Body</div>
</li>
</ul>
</div>
$el = $('#timeline ul').find("li.timeline-event").data('event_id');
console.log($el); // returns 1282
$el = $('#timeline ul').find("li.timeline-event[data-event_id='1282']").html();
console.log($el); // returns undefined
我做错了什么?
编辑 - 解决方案
使用.data('event_id','1282')在代码中的其他地方设置数据。
如果使用.data()设置数据,则jQuery无法获取数据。
我在这里使用@psycho brm的filterByData函数找到了解决方案。它有效!
jQuery how to find an element based on a data-attribute value?
$.fn.filterByData = function(prop, val) {
return this.filter(
function() { return $(this).data(prop)==val; }
);
}
我认为这肯定是一个jQuery错误?
答案 0 :(得分:0)
我没有在你的HTML中看到data-attr。
我已经尝试过将data-event_id =“1282”添加到li http://jsfiddle.net/dehisok/Wa5RG/
的代码 <li class="timeline-event" data-event_id="1282">
有效!
答案 1 :(得分:0)
使用.data('event_id','1282')在代码中的其他地方设置数据。
如果使用.data()设置数据,则jQuery无法获取数据。
我在这里使用filterByData函数找到了解决方案。它有效!
jQuery how to find an element based on a data-attribute value?
答案 2 :(得分:0)
第二个id返回undefined因为你应该为他提供两个选项 (i)班级名称 (ii)属性
您应该尝试仅指定它们