Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请求多个id';具有相同数据属性的_Javascript_Jquery - Fatal编程技术网

Javascript 请求多个id';具有相同数据属性的

Javascript 请求多个id';具有相同数据属性的,javascript,jquery,Javascript,Jquery,我正在尝试检查多个列表项中的数据属性 我的HTML: <ul id="year"> <li id="2006">2006</li> <li id="2007">2007</li> <li id="2008">2008</li> <li id="2009">2009</li> <li id="2010">2010</li> <li id=

我正在尝试检查多个列表项中的数据属性

我的HTML:

<ul id="year">
  <li id="2006">2006</li>
  <li id="2007">2007</li>
  <li id="2008">2008</li>
  <li id="2009">2009</li>
  <li id="2010">2010</li>
  <li id="2011">2011</li>
  <li id="2012">2012</li>
  <li id="2013">2013</li>
  <li id="2014">2014</li>
</ul>
现在我试图检查是否有任何列表项的“状态”=“打开” 像这样:

if ((jQuery('#year li').data('state') == "on"))
但它似乎不起作用

编辑:所以我尝试了你给我的所有不同的代码片段:它们都不起作用,所以我做了一个简单的for循环,它会在每个列表点本身中查找:

    for ( var y = 2006, l = 2015; y < l; y++ )
    {
    if ((jQuery('#year #'+y).data('state') == "on"))
    {
        alert('data found');
    }
(变量y=2006,l=2015;y 另一个问题是,在编写代码之前,我没有任何事件! 感谢您的支持!

您可以使用,然后检查
length
属性

var list = jQuery('#year li').filter(function(){
    return $(this).data('state') == "on"; 
    //OR, using native dataset
    //return this.dataset.state == 'on'
});

if (list.length){
   //li with state on exits
}

这对您不起作用的原因是jQuery不在“标准”元素数据集中存储数据值。您可以通过自己这样做来实现您的目标:

$(“#李年”)。单击(函数(){
this.dataset.state=this.dataset.state=='off'?'on':'off';
如果($('year li[data state=“on”]”)。长度>0){
警报('找到!')
}
});
#年份li[data state=“on”]{
颜色:蓝色;
}

    2006年 2007年
  • 2008
  • 2009年
  • 2010年
  • 2011年
  • 2012年
  • 2013年
  • 2014年
jQuery(“#year li”)将返回jQuery对象数组

您需要循环
每个
一个

$('#year li').each(function () {
    if ((jQuery(this).data('state') === "on")){
        alert("on state found");
    }
});

可能值得指出DOM方法:
this.dataset.state=='on'
您可以添加一个代码段吗?您的函数返回这个:[Object Object]@Aztekke,Yes filter返回jQuery对象,您需要检查其
长度
属性长度为“0”不管状态是off还是OND,你注意到我的答案了吗?这不是你想要的吗?是的,我看到了你的答案,但这对我来说太复杂了!但我发现了一个简单的解决方案,它的工作原理是一样的。好吧,由你决定。这只是一行代码,也许可以再看一次(其他所有的都是样板,以展示它的工作原理)@阿米特,看这行文字对我来说没有意义:this.dataset.state=this.dataset.state=='off'?'on':'off';然后读。
$('#year li').each(function () {
    if ((jQuery(this).data('state') === "on")){
        alert("on state found");
    }
});