Подтвердить что ты не робот

JQuery: выберите атрибуты данных, которые не являются пустыми?

Я пытаюсь выбрать все элементы с атрибутом data-go-to, который не является пустым.

Я пробовал $('[data-go-to!=""]'), но, как ни странно, кажется, что он выбирает каждый элемент на странице, если я это делаю.

4b9b3361

Ответ 1

попробовать

$(':not([data-go-to=""])')

UPDATE:

Ради того, чтобы никого не сбивать с толку, этот ответ будет работать в более ранних версиях jQuery, но не является будущим. Поскольку ответы @gmo и @siva обе кажутся работающими с более поздними версиями, я откладываю (и поощряю вас отстаивать) свои ответы... и, конечно, надеюсь, что у вас есть фантастический день.

Ответ 2

Как дополнительная ссылка и обновленный (may'14) (aug'15) (sep'16) (apr'17) который работает с:

Пустые строки:

Если существует attr must и может иметь любое значение (или вообще ничего)

    jQuery("[href]");

Отсутствующие атрибуты:

Если attr может существовать, а если существует, должен иметь некоторое значение

    jQuery("[href!='']");

Или оба:

Если attr должен существовать, а должен иметь некоторое значение...

    jQuery("[href!=''][href]");

PS: возможны больше комбинаций...


Проверьте этот тест в jsFiddle для примеров:


Или здесь, в SO с этим фрагментом кода.

* Snippet запускает jQuery v2.1.1

jQuery('div.test_1 > a[href]').addClass('match');
jQuery('div.test_2 > a[href!=""]').addClass('match');
jQuery('div.test_3 > a[href!=""][href]').addClass('match');
div,a {
    display: block;
    color: #333;
    margin: 5px;
    padding: 5px;
    border: 1px solid #333;
}
h4 {
    margin: 0;
}
a {
    width: 200px;
    background: #ccc;
    border-radius: 2px;
    text-decoration: none;
}
a.match {
    background-color: #16BB2A;
    position: relative;
}
a.match:after {
    content: 'Match!';
    position: absolute;
    left: 105%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test_1">
    <h4>Test 1: jQuery('a[href]')</h4>
    <a href="test">href: test</a>
    <a href="#">href: #</a>
    <a href="">href: empty</a>
    <a>href: not present</a>
</div>
<div class="test_2">
    <h4>Test 2: jQuery('a[href!=""]')</h4>
    <a href="test">href: test</a>
    <a href="#">href: #</a>
    <a href="">href: empty</a>
    <a>href: not present</a>
</div>
<div class="test_3">
    <h4>Test 3: jQuery('a[href!=""][href]')</h4>
    <a href="test">href: test</a>
    <a href="#">href: #</a>
    <a href="">href: empty</a>
    <a>href: not present</a>
</div>

Ответ 3

$('[data-go-to!=""]:[data-go-to]').each(function() {
    // Do Your Stuff
});​

Ответ 4

Я не уверен в простом селекторе, но вы можете использовать filter():

$('[data-go-to]').filter(
    function(){
        return ($(this).attr('data-go-to').length > 0);
    });

JS Fiddle demo.

Литература:

Ответ 5

В соответствии с документацией это должно сделать это

:not([attr="value"])

DEMO

Надеюсь, что это поможет

Ответ 6

Имеет 'data-attributename' и его значение не пусто:

$('[data-attributename]:not([data-attributename=""])')

По умолчанию 'data-attributename' пуст или нет:

$('[data-attributename]')

Пример скрипта JS

Ответ 7

$('[data-go-to]').filter(function() {
    return $(this).data('go-to')!="";
});

Используя :not, .not(), :empty и т.д., будет проверяться только, является ли сам элемент пустым, а не атрибутом данных. Для этого вам придется фильтровать на основе значений атрибутов данных.

FIDDLE

Ответ 8

$('[data-go-to]:not([data-go-to=""])')

JSBIN

Ответ 9

Это работает для меня

$('[attributename]').filter('[attributename!=""]')

Ответ 10

Попробуйте следующее:

$('[data-go-to:not(:empty)]')

Ответ 11

Это работает для меня:

$('.data .title td[data-field!=""]')