【发布时间】:2014-03-03 19:53:27
【问题描述】:
我正在尝试通过数据属性值 (data-event_id=1282) 获取 <li> 元素。
<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 错误?
【问题讨论】:
-
您提供的 html 中没有 data-event_id 属性。请更新您的示例代码。
-
.find()永远不会返回undefined,即使它没有找到任何东西,它也会返回一个空的 jQuery 集合。 -
它是如何复制的?他已经使用了正确的选择器。他的问题一定是不同的——他显然没有发布实际代码。
-
@Barmar,你的权利,我从最后错过了 .html() 。然后它返回 undefined。
标签: jquery dom jquery-selectors