【问题标题】:Jquery select all elements that have an accesskey definedJquery 选择所有定义了 accesskey 的元素
【发布时间】:2012-06-15 09:28:00
【问题描述】:

我想选择所有定义了 accesskey 的元素。

我知道我可以做到这一点:$('[accesskey]'),但这给了我很多输入、href 等,在页面上(其中大多数有一个空的 accesskey)。

有什么办法只选择accesskey实际有值的元素?

编辑:我也发现了空访问键的原因,是由多个模式对话框上的一些旧的禁用/恢复访问键 javascript 函数引起的。通常你不会用空访问键获得那么多元素子>

【问题讨论】:

  • 你可以查看这个帖子...stackoverflow.com/questions/1097522/…
  • @Subhajit:那篇文章是关于属性的存在的。我的问题是关于一个应该有值的属性,而不仅仅是它的存在。

标签: jquery .net access-keys


【解决方案1】:

只有一个选择器:

$('[accesskey][accesskey!=""]').foo

它是如何工作的:

// Has the accesskey attribute defined.
[accesskey]

// Doesn't have an empty value for the accesskey attribute.
[accesskey!=""]

Together 它选择每个具有accesskey 属性且不为空的元素。

【讨论】:

  • @ErikDekker。没问题,我很乐意提供帮助。
【解决方案2】:

你可以这样做

$('[accesskey]').filter(function(){
    return $(this).prop('accessKey');
});

.filter() 或其他人已经说过你可以使用attribute-not-equal-selector

Working sample

【讨论】:

  • @thecodeparadox,谢谢。 attr 正在解决这个问题。我认为attrprop 是可以互换的。你能纠正我吗?
  • @gdoron,谢谢先生,我很快就会这样做。
  • @thecodeparadox。顺便说一句,问题出在你的小提琴上,prop 工作得很好......请不要告诉人们他们“完全错误”,特别是当他们不是时。 :( 高兴,如果您使用的是prop,则确实需要将accesskey 更改为accessKey,属性区分大小写,而属性则不区分大小写。祝你们俩好运...
  • @gdoron,感谢您的澄清,明白了。 :)
【解决方案3】:

你可以使用额外的循环

$("[accesskey]").each(function() {
    if($(this)).attr('accesskey').length > 0) {
        // do it
    }
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多