Почему "[value = '']" вызывает исключение в IE7, а ": not (: not ([value = '']))" нет? - PullRequest
7 голосов
/ 23 января 2012

Я пытаюсь выбрать метку опции (опция со значением "") из поля выбора через jQuery. Я использую следующий селектор:

$("[value='']");

Это работает в большинстве браузеров, однако в IE7 это исключение. Если я изменю его на следующий (imho эквивалентный) селектор, то он будет работать нормально:

$(":not(:not([value='']))");

Я бы предпочел не использовать последнее, но не могу придумать лучшего эквивалента предыдущего.

Edit:

jQuery версия: 1.3.1.
Исключение:
Ошибка выполнения Microsoft JScript: исключение сгенерировано и не перехвачено
на

if(S==null){throw"Syntax error, unrecognized expression: "+ab}

, где

ab = "value='']"

Тестовая настройка:

Чтобы убедиться, что мой другой код не вызвал проблемы, я воспроизвел ошибку в следующей ситуации:

<html>
    <head>
        <script type="text/javascript" src="jquery-1.3.1.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                alert($("option[value='']").html());
            });
        </script>
    </head>
    <body>
        <select>
            <option value="">test</option>
            <option value="1">test1</option>
            <option value="2">test2</option>
        </select>
    </body>
</html>

Edit:

Ссылка на отчет об ошибке

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Я бы хотел порекомендовать вам использовать последнюю версию jQuery, которая решит вашу проблему.Но если вы используете эту версию по уважительной причине, вы должны попробовать следующее:

Это должно работать во всех браузерах:

alert( jQuery( 'input[value=]' ) );

Протестировано с JSFiddle и без ошибок: http://jsfiddle.net/bobkruithof/WUVHj/

0 голосов
/ 23 января 2012

В идеале это не должно давать вам никакой ошибки.Попробуйте также указать тип тега $("input[value='']"), предполагая, что у вас нет других элементов для поиска с атрибутом value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...