我有ul
个项目。我使用jquery在页面加载后动态填充列表。当我添加每个列表项时,我还使用jquery“.data()”函数向该元素的数据添加“itemID”。像这样:
var item = $('<li>My Item Name</li>');
item.data('itemID', '123ABC456');
稍后,我需要一个选择器来确定我的项目列表中是否有任何具有特定itemID的项目。首先我尝试使用:
$('*[data-itemID="123ABC456"]');
这不起作用 - 在进一步研究中,我发现只有在加载页面时在DOM中设置了data属性时,此语法才有效。如果动态使用“.data”jquery方法,它将无效。
接下来我尝试了:
$(':data(itemID==123ABC456)');
出于某种原因,这不起作用。但是,如果我只运行$(':data(itemID)')
,那么我做获取所有在其数据中都有itemID的li元素。
我知道itemID属性设置正确,就像我在该列表项上调用.data()
一样:
Object { itemID="123ABC456"}
如何在数据中选择itemID为“123ABC456”的所有元素?
答案 0 :(得分:9)
http://jsfiddle.net/w28p9/1/&lt; - jsFiddle示例显示与data-attribute&amp;的差异jquery.data()
jQuery.data()
与您尝试搜索的HTML5数据名称属性不同。
http://api.jquery.com/jQuery.data/
jQuery.data()保存在jquery元素内部(此数据隐藏在普通视线之外)。
如果在实际内部有[data-itemID]
。
<li data-itemID="12345"></li>
会有效
要检索并查找实际隐藏的.data()
尝试:
// of course be more specific than just searching through all <li>'s
$('li').each(function () {
if ( $(this).data('itemID') === '123ABC456' ) {
// do whatever you wanted to do with it
}
});
希望有所帮助!
答案 1 :(得分:4)
而不是
$(item).data('itemID', '123ABC456')
使用
$(item).attr('data-itemID', '123ABC456')
然后你可以使用
$('[data-itemID=123ABC456]')
作为选择器
答案 2 :(得分:0)
如何将itemID放在DOM中:
var item = $('<li itemID="'+itemid+">My Item Name</li>');