получение атрибута с использованием jQuery в IE - PullRequest
2 голосов
/ 20 мая 2009

У меня есть простая кнопка:

<button type="button" id="somebutton" value="start">blah</button>

в jQuery, на привязке ('click, function () {.... У меня есть это:

$(this).attr("value")

конечно же, это получает значение атрибута, которое в данном конкретном случае - «начало». Хорошо, это работает в Firefox, я получаю правильное значение «start». Однако в IE 7 значение, которое я получаю, равно «somebutton».

почему

Ответы [ 5 ]

4 голосов
/ 08 декабря 2009

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

IE сообщает как .val () и .attr ("значение") как текстовую метку (содержимое) элемента кнопки вместо фактического значения атрибута значения.

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

var label = $(this).text(); 
$(this).text('');
var buttonValue = $(this).val();
$(this).text(label);

В IE есть еще несколько причуд с кнопками. Я выложил исправление для большинства проблем здесь .

3 голосов
/ 20 мая 2009

Я сталкивался с этим раньше. Я не знаю, почему это происходит для <button>. Это может быть ошибка в jQuery, или ошибка в IE, или комбинация обоих.

В конце концов, я решил использовать стандартный <input type="button"/>, чтобы обойти проблему.

1 голос
/ 29 января 2011

Использование button.attributes.value.nodeValue должно дать вам правильное значение. Подробнее см. jQuery Bug # 1954 .

Относительно почему в вопросе: вы попали в одну из ошибок IE. В этом случае jQuery пока не предлагает обходного пути.

0 голосов
/ 21 мая 2009

используйте тег <input>. Должно работать

0 голосов
/ 20 мая 2009

Чтобы решить эту проблему, вам придется потерять тег <button> и вместо него перейти на тег <input>.

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