请求具有相同数据属性的多个ID

时间:2015-09-30 09:03:48

标签: 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="2011">2011</li>
  <li id="2012">2012</li>
  <li id="2013">2013</li>
  <li id="2014">2014</li>
</ul>

这是jQuery:

jQuery('#year li').click(function()
{
    var year = jQuery(this).attr('id');
    if ((jQuery(this).data('state') === undefined) || (jQuery(this).data('state') == "off"))
    {
        jQuery(this).data('state', 'on');
    }
    else
    {
        jQuery(this).data('state', 'off');
    }
});

现在我正在尝试检查是否有任何列表项,其中“state”==“on” 像这样:

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');
    }

另一个问题是我的代码之前没有任何事件! 感谢您的支持!

3 个答案:

答案 0 :(得分:1)

您可以使用.filter(),然后检查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
}

答案 1 :(得分:1)

WebElement element=driver.findElement(By.xpath("Your Xpath")); JavascriptExecutor executor = (JavascriptExecutor) driver; executor.executeScript("arguments[0].click();", element); 将返回一个jquery对象数组。

您需要循环jQuery('#year li')一个

each

答案 2 :(得分:0)

这对你不起作用的原因是jQuery没有将数据值存储在&#34;标准&#34;元素数据集。您可以自己实现目标:

&#13;
&#13;
$('#year li').click(function() {
  this.dataset.state = this.dataset.state === 'off' ? 'on' : 'off';
  if($('#year li[data-state="on"]').length > 0) {
    alert('Found!')
  }
});
&#13;
#year li[data-state="on"] {
  color: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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>
&#13;
&#13;
&#13;