jQuery如何根据数据查找元素
我有以下情况:
var el = 'li';
并且页面上有5个<li>
,每个都有一个data-slide=number
属性(数字分别为1,2,3,4,5)。
我现在需要找到当前激活的幻灯片编号,它被映射到var current = $('ul').data(current);
并在每次幻灯片更改时更新。
到目前为止,我的尝试都失败了,试图构造匹配当前幻灯片的选择器:
$('ul').find(el+[data-slide=+current+]);
不匹配/返回任何内容...
我无法对li
部分进行硬编码的原因是,这是一个用户可访问的变量,如果需要,可以将其更改为不同的元素,因此它可能并不总是li
。
关于我失踪的任何想法?
你要的价值注入current
为属性等于选择:
$("ul").find(`[data-slide='${current}']`)
对于较旧的JavaScript环境(ES5及更早版本):
$("ul").find("[data-slide='" + current + "']");
如果您不想输入所有内容,则可以通过以下数据属性进行查询:
$("ul[data-slide='" + current +"']");
仅供参考:http://james.padolsey.com/javascript/a-better-data-selector-for-jquery/
使用[data-x = ...]进行搜索时,请注意, 它不适用于jQuery.data(..)setter :
$('<b data-x="1">' ).is('[data-x=1]') // this works
> true
$('<b>').data('x', 1).is('[data-x=1]') // this doesn't
> false
$('<b>').attr('data-x', 1).is('[data-x=1]') // this is the workaround
> true
你可以用它来代替:
$.fn.filterByData = function(prop, val) {
return this.filter(
function() { return $(this).data(prop)==val; }
);
}
$('<b>').data('x', 1).filterByData('x', 1).length
> 1
链接地址: http://www.djcxy.com/p/22951.html
上一篇: jQuery how to find an element based on a data
下一篇: HttpURLConnection: BindException when creating many connections