动态添加数据时按数据属性查询JQuery选择器
JQuery selector by data attribute when data is added dynamically?
我有一个包含多个项目的ul
。我使用jquery在页面加载后动态填充列表。在添加每个列表项时,我还使用jquery".data()"函数向该元素的数据添加了一个"itemID"。类似这样的东西:
var item = $('<li>My Item Name</li>');
item.data('itemID', '123ABC456');
稍后,我需要一个选择器来确定我的项目列表中是否有具有特定项目ID的项目。首先我尝试使用:
$('*[data-itemID="123ABC456"]');
这不起作用——在进一步的研究中,我发现这种语法只有在加载页面时在DOM中设置了数据属性时才起作用;如果您动态地使用".data"jquery方法,它将不起作用。
接下来我尝试了:
$(':data(itemID==123ABC456)');
出于某种原因,这不起作用。然而,如果我只运行$(':data(itemID)')
,那么我会获取数据中有itemID的所有li元素。
我知道itemID属性设置正确,因为当我对该列表项调用.data()
时,我得到:
Object { itemID="123ABC456"}
如何选择数据中itemID为"123ABC456"的所有元素?
http://jsfiddle.net/w28p9/1/<--jsFiddle示例显示了与数据属性&jquery.data()
jQuery.data()
与您尝试搜索的HTML5数据NAME属性不同。
http://api.jquery.com/jQuery.data/
jQuery.data()保存在jQuery元素内部(该数据是隐藏的)。如果实际的内部有<li data-itemID="12345"></li>
,则查找[data-itemID]
将起作用。
要检索并查找实际隐藏的.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
}
});
希望能有所帮助!
而不是
$(item).data('itemID', '123ABC456')
使用
$(item).attr('data-itemID', '123ABC456')
然后你可以使用
$('[data-itemID=123ABC456]')
作为选择器
把itemID放在DOM:中怎么样
var item = $('<li itemID="'+itemid+">My Item Name</li>');
相关文章:
- 将curl查询转换为jQuery.ajax()
- 将语句与jquery相结合,并使用媒体查询来实现返回页首按钮
- 使用Jquery收集数组中的行ID,然后为新表查询这些值
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- jQuery对请求图像的外部文本进行查询
- 根据jquery数据属性值进行查询
- 如何在函数带有更多postJSON查询时使用jQuery
- jQuery用fiddle在标题中查询移动搜索输入(标题的覆盖)
- 使用jquery显示mysql查询结果
- css媒体查询请求后刷新jQuery插件
- jQuery.thoggle()和媒体查询
- jQuery中的查询选择器导致无法识别的表达式
- 如何将垂直选项卡式内容面板更改为具有媒体查询和 jquery 的响应式可折叠面板
- 在 jQuery 中查询元素的字符串
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- Jquery $.get() 在 javascript 中操作由查询产生的数据
- Jquery数组查询不起作用
- jQuery脚本,它搜索现有的查询参数并且不添加“"如果存在
- 动态添加数据时按数据属性查询JQuery选择器
- 查询jQuery's $(selector).each() 'element'参数vs $(th