Различное поведение jQuery-кода в Chrome и Firefox?

0

Я боролся со странным случаем. 1. Эта же страница открывается и отлаживается в Chrome и Firefox. 2. Код:

$("ul[id^='_'").each(function(){
         // some actions which work good in Chrome
});

3. Во время отладки я понял, что проблема в $("ul[id^='_'") 4. Попытка выполнить это в консоли Chrome я получаю:

Изображение 174551

это нормально, и я ожидаю. Однако тот же код в Firefox 25 возвращает мне следующее:

Изображение 174551

Это пустой объект, которого явно нет. Итак, какая разница между этим кодом в двух браузерах? Я подозреваю, что проблема может быть в кириллической ценности id-атрибута, но она успешно работает и IE и Chrome, и попадает в Firefox и Mozilla?

Пожалуйста, помогите мне исправить.

UPD: http://jsfiddle.net/jeston/WEm78/

  • 1
    Вы можете предоставить скрипку?
  • 1
    Я думаю, что поле идентификатора не может начинаться с чего-то другого, кроме буквы. Попробуйте переименовать поле ul id во что-то другое (не начинайте с символа / буквы) и проверьте еще раз ваши 2 браузера
Показать ещё 2 комментария
Теги:
each

3 ответа

0
Лучший ответ

Существует хороший ответ о том, что использовать для ID.

Короче говоря, проблема заключается в том, что поле HTML ID может начинаться только с буквы, цифр или специальных символов.

Например, это действительные идентификаторы

hello
hello_1
hello_world_1
dropdown

Это не

1_dropdown
$34_element
  • 0
    Идентификатор может начинаться с подчеркивания, так что это не проблема.
  • 0
    на самом деле источник, который вы цитируете, взят из старого ответа, ссылаясь на спецификацию html4 , в html5 это не так
3

это может быть неправильно:

$("ul[id^='_']").each(function(){
         console.log(this)
});

//ul [id ^ = '_' ] <----

  • 0
    Да, ты прав. Я проголосовал, однако я думаю, что ответ об идентификаторе атрибута в HTML делает код более реальным.
1

Альтернативное решение

var $result = $('ul').filter(function(){
    return this.id.charAt(0) === '_';
});

console.log($result);

http://jsfiddle.net/2enJ3/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню