IE 7 не нравится jQuery (' <кнопка/>'). attr ('тип', 'кнопка')

Я пытаюсь создать кнопку с помощью jQuery. Я использую следующий код

jquery('<button/>', {type:'button'}).text(name)

Однако это работает в Safari, FF IE8, но не IE7

я пытался использовать функцию attr:

jquery('<button/>').attr('type','button').text(name)

это не работает также.

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

спасибо за помощь

5
задан Kobi 9 May 2010 в 19:55
поделиться

2 ответа

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

var button = $('<button type="button"/>');

Теперь, как оказалось, типом по умолчанию для кнопок в IE все равно является "кнопка" (по крайней мере, 7, не уверен в стандарт-режим 8). Однако вышеперечисленное должно работать. Я только что столкнулся с этим на днях. IE позволяет вам указать тип прямо в синтаксисе элемента при создании элементов, и кажется, что jQuery в значительной степени передает свой аргумент прямо здесь низкоуровневому DOM API.

Да, и он отлично работает в FF и Chrome.


править - ну какая разница в году, а? Я не могу заставить этот механизм работать у меня сейчас с jQuery 1.4.4 или jQuery 1.5.x. Хорошей новостью является то, что jQuery 1.6, похоже, работает так, как хотел OP: через установку «типа» более обычным способом, подобным jQuery.

Что делает , похоже, работает, так это прямой вызов ".setAttribute ()" для элемента. Таким образом:

var b = $('<button/>');
b[0].setAttribute('type', 'button');

не генерирует исключение, и правильно устанавливает атрибут "type". (Это само по себе немного странно, поскольку Microsoft четко документирует «тип» как доступный только для чтения.) Изменение в 1.6, похоже, происходит в том же направлении. Раньше библиотека действительно проверяла «тип» и явно запрещала его установку для элементов, уже находящихся в DOM, но продолжала пытаться установить его как простой атрибут для элемента, не входящего в DOM. Теперь код 1.6 вызывает ".setAttribute () "для установки" типа ", который (по неизвестным мне причинам) работает нормально.

5
ответ дан 14 December 2019 в 19:05
поделиться

Вы пробовали:

var $btn = $("<button>Button Text</button>");

Затем вы можете добавить это в любое место вашего документа. Вообще, вы можете создать практически любой элемент DOM, используя строковый литерал таким образом.

1
ответ дан 14 December 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: