jQuery: добавление двух атрибутов через.м(); метод
EDIT:
я узнал, что с помощью другого значения, чем _blank
, не работает в мобильных браузерах для открытия новых окон / вкладок.
например, если вам нужно открыть новое окно / вкладку:
это работает во всех браузерах, даже в мобильных браузерах:
target="_blank"
.это не работает на мобильных браузерах, но это работает на настольных браузерах:
target="new"
.
--
хотя у меня это работает, я не уверен, что есть лучший способ сделать это, или если я получил это правильный/единственный способ.
в основном то, что я делаю, заменяя все target="_new"
или target="_blank"
значения атрибутов target="nw"
, таким образом, только одно новое окно открыто, и в нем откроются все другие новые окна, чтобы не перегружать пользователя несколькими окнами.
я также добавляю " открывается в новом окне".
Итак, решение, которое я создал, это:
$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');
обратите внимание на две .attr();
методы.
это правильный способ добавить два атрибута к элементу?
пробовал .attr('target','nw','title','Opens in a new window')
но это не сработало.
причина, по которой я спрашиваю, связана с принципом DYR (не повторяйтесь), поэтому, если я могу улучшить код, который у меня есть, отлично, если нет, то это то, что он есть.
спасибо.
5 ответов:
должно работать:
.attr({ target:"nw", title:"Opens in a new window" });
Примечание:
"при установке нескольких атрибутов кавычки вокруг имен атрибутов являются необязательными.
предупреждение: при установке атрибута 'class', вы всегда должны использовать кавычки!
из документации jQuery (сентябрь 2016) для .аттр:
попытка изменить тип атрибут для элемента ввода или кнопки, созданного с помощью документа.createElement () вызовет исключение в Internet Explorer 8 или старше.
Edit:
Для дальнейшего использования... К сделать один атрибут, который вы бы использовалиvar strAttribute = $(".something").attr("title");
до установить один атрибут, который вы бы использовали
$(".something").attr("title","Test");
до установить несколько атрибуты вам нужно обернуть все в { ... }
$(".something").attr( { title:"Test", alt:"Test2" } );
изменить - если ты пытаешься получить/установить 'проверено' атрибут от флажка...
вам нужно будет использовать
prop()
по состоянию на jQuery 1.6+the .метод prop () предоставляет способ явного извлечения значений свойств, в то время как .attr () извлекает атрибуты.
...наиболее важным понятием, которое следует помнить о проверяемом атрибуте, является то, что он не соответствует проверяемому свойство. Атрибут фактически соответствует свойству defaultChecked и должен использоваться только для установки начального значения флажка. значение атрибута checked не изменяется в зависимости от состояния флажка, в то время как свойство checked делает
так получить проверенный статус флажка, вы должны использовать:
$('#checkbox1').prop('checked'); // Returns true/false
или установить флажок в качестве зарегистрированного или незарегистрированного вы должны использование:
$('#checkbox1').prop('checked', true); // To check it $('#checkbox1').prop('checked', false); // To uncheck it