Jquery выбирает все элементы, для которых определен ключ доступа

Я хочу выбрать все элементы, для которых определен ключ доступа.

Я знаю, что могу сделать это: $('[accesskey]'), но это дает мне много входных данных, ссылок и т. д. на странице (большинство из них имеют пустой ключ доступа).

Как выбрать только те элементы, где ключ доступа действительно имеет значение?

Редактировать: я также обнаружил причину пустых ключей доступа, которая была вызвана некоторыми старыми функциями javascript отключения/восстановления ключей доступа в нескольких модальных диалогах.. обычно вы не получите столько элементов с пустыми ключами доступа


person Erik Dekker    schedule 15.06.2012    source источник
comment
Вы можете проверить этот пост... stackoverflow.com/questions/1097522/   -  person Subhajit    schedule 15.06.2012
comment
@Subhajit: этот пост о существовании атрибута. Мой вопрос касается атрибута, который должен иметь значение, а не только его существование.   -  person Erik Dekker    schedule 15.06.2012


Ответы (3)


С одним селектором:

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

Как это работает:

// Has the accesskey attribute defined.
[accesskey]

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

Вместе он выбирает каждый элемент, который имеет атрибуты accesskey и не является пустым.

person gdoron is supporting Monica    schedule 15.06.2012
comment
@ЭрикДеккер. Нет проблем, я был рад помочь. - person gdoron is supporting Monica; 15.06.2012

Ты можешь это сделать

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

.filter() или, как уже было сказано, вы можете использовать attribute-not-equal-selector

Рабочий образец

person Prasenjit Kumar Nag    schedule 15.06.2012
comment
@thecodeparadox, спасибо. attr исправляет это. Я думал, что attr и prop взаимозаменяемы. Не могли бы вы исправить меня? - person Prasenjit Kumar Nag; 15.06.2012
comment
@gdoron, спасибо, сэр, я скоро это сделаю. - person Prasenjit Kumar Nag; 15.06.2012
comment
@thecodeparadox. Кстати, проблема была с вашей скрипкой, prop работает просто отлично... Пожалуйста, не говорите людям, что они абсолютно не правы, особенно когда это не так. :( И радость, вам нужно изменить accesskey на accessKey, если вы используете prop, свойства чувствительны к регистру, а атрибуты - нет. Удачи вам обоим... - person gdoron is supporting Monica; 15.06.2012
comment
@gdoron, Спасибо за пояснение, понял. :) - person Prasenjit Kumar Nag; 15.06.2012

вы можете использовать и дополнительный цикл

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

я надеюсь, что это поможет вам

person Holger D. Schauf    schedule 15.06.2012