jQuery按数据id获取元素

时间:2014-02-06 17:44:38

标签: jquery dom jquery-selectors

我正在尝试按数据属性值获取<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错误?

3 个答案:

答案 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)属性

您应该尝试仅指定它们