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 86

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

надлежащим образом:

.attr({target:'nw', title:'Opens in a new window'})

Если вы что добавить bootstrap атрибуты в якорный тег динамически, чем это поможет вам много

 $(".dropdown a").attr({
      class: "dropdown-toggle",
     'data-toggle': "dropdown",
      role: "button",
     'aria-haspopup': "true",
     'aria-expanded': "true"
});

что-то вроде этого:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});

используйте фигурные скобки и поместите все атрибуты, которые вы хотите добавить внутри

пример:

$('#objId').attr({
    target: 'nw',
    title: 'Opens in a new window'
});