2

I want to select all elements that have an accesskey defined on them.

I know that i can do this: $('[accesskey]'), but that gives me lot of inputs, hrefs etc, on the page (most of them have an empty accesskey).

What is the way to select only the elements where the accesskey actually has a value?

Edit: I found the cause of the empty accesskeys as well, was caused by some old disable / restore accesskeys javascript functions over multiple modal dialogs.. normally you won't get that much elements with empty accesskeys

Erik Dekker
  • 2,345
  • 5
  • 32
  • 54
  • You can check this post... http://stackoverflow.com/questions/1097522/check-existence-of-an-attribute-with-jquery – Subhajit Jun 15 '12 at 09:32
  • @Subhajit: that post is about the existance of an attribute. My question is about an attribute that should have a value, not just the existance of it. – Erik Dekker Jun 15 '12 at 10:26

3 Answers3

2

With one selector:

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

How does it work:

// Has the accesskey attribute defined.
[accesskey]

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

Together it select every element which has the accesskey attributes and it's not empty.

gdoron is supporting Monica
  • 142,542
  • 55
  • 282
  • 355
1

You can do this

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

.filter() or like other have already said you can use the attribute-not-equal-selector

Working sample

Prasenjit Kumar Nag
  • 13,321
  • 3
  • 43
  • 57
0

you can use and additional loop

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

i hope it will help you