Селектор jQuery: Firefox распознает, но IE нет - PullRequest
0 голосов
/ 07 октября 2010

Это мой элемент с пользовательским атрибутом:

<input type="radio" status="B" name="OPT_PARENT"/>


Мой сценарий:
Предупреждение ($ (это) .attr ( "статус"));
Предупреждение ($ (это) .attr ( "тест"));

Выход:
Firefox 3.0.10 -> «B» и «undefined»
IE 8.0.7600.16385 -> «true» и «undefined»

Мое наблюдение:
IE вернет опциональную кнопку «проверено состояние», которая имеет значение true / false, а не значение пользовательского атрибута. Но IE определенно может определить, существует ли пользовательский атрибут.

Мой вопрос: Как получить значение моего пользовательского атрибута в IE?

Ответы [ 4 ]

2 голосов
/ 07 октября 2010

, возможно, лучшим вариантом было бы использовать jquery Data () , который позволяет вам присоединять данные к объектам DOM без изменения их с помощью недопустимых / пользовательских атрибутов.

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

1 голос
/ 07 октября 2010

Использование пользовательских атрибутов, как правило, плохая идея, и то, что у вас есть, недопустимо даже в HTML5, который должен разрешать настраиваемые атрибуты.Почему бы не передать дополнительную информацию как класс или как идентификатор?У вас может быть что-то вроде

<input type="radio" id="extra_A" name="OPT_PARENT"/>
<input type="radio" id="something_B" name="OPT_PARENT"/>
<input type="radio" id="extra_C" name="OPT_PARENT"/>

Причина, по которой я поставил перед ним префикс, состоит в том, чтобы было проще выбрать только те элементы, которые вам нужны:

$("input[id^=extra_]").each(function() {
    alert($(this).attr('id').substr(6));
});

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

0 голосов
/ 07 октября 2010

Спасибо всем.Каким-то образом мои друзья сказали мне, что «status» - это, вероятно, нестандартный атрибут .Поэтому после изменения «status» -> «myStatus» мой код работает хорошо.

0 голосов
/ 07 октября 2010

Это обходной путь для IE, использующий outerHTML

var status = 
   ($(this)
    .get(0)
    .outerHTML
    .replace(/^.+?\bstatus\s*=\s*(?:['"])(\w+).*$/, 
       function(tag, valueattr) {
          return valueattr;
       })) || '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...