jQuery:通过.attr()添加两个属性; 方法

编辑:

我了解到,使用_blank之外的其他值,不能在移动浏览器上打开新的窗口/选项卡。

例如,如果你需要打开一个新的窗口/选项卡:

  • 这适用于所有浏览器,甚至移动浏览器: target="_blank"

  • 在移动浏览器上不起作用 ,但在桌面浏览器上可以正常工作target="new"

虽然我有这个工作,但我不确定是否有更好的方法来做到这一点,或者如果我的方式是正确的/唯一的方式。

基本上我正在做的是将所有target="_new"target="_blank"属性值replace为target="nw" ,这样只有一个新窗口被打开,并且所有其他的新窗口将会打开不会用多个窗口压倒用户。

我还添加了“ 在新窗口中打开title=""属性。

所以我创build的解决scheme是这样的:

 $("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(不要重复自己)的原则,所以如果我能改善我的代码,那么很好,如果不是,那么它就是这样。

谢谢。

应该pipe用:

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

注意

设置多个属性时,属性名称的引号是可选的。

警告 :设置'class'属性时,必须始终使用引号!

从jQuery文档(2016年9月) .attr :

尝试更改通过document.createElement()创build的input或按​​钮元素上的type属性将在Internet Explorer 8或更低版本上引发exception。

编辑
为了将来的参考…要获得一个属性,你会使用

 var strAttribute = $(".something").attr("title"); 

设置您将使用的单个属性

 $(".something").attr("title","Test"); 

设置多个属性,您需要将所有内容都包含在{…}中

 $(".something").attr( { title:"Test", alt:"Test2" } ); 

编辑 – 如果你想从checkbox中获取/设置'checked'属性…

你将需要使用prop() 作为jQuery 1.6+

.prop()方法提供了显式检索属性值的方法,而.attr()检索属性。

…关于checked属性最重要的概念是它不符合checked属性。 该属性实际上对应于defaultChecked属性,只能用于设置checkbox的初始值。 检查的属性值不会随checkbox的状态而变化,而检查的属性值会变化

所以要获得一个checkbox的检查状态 ,你应该使用:

 $('#checkbox1').prop('checked'); // Returns true/false 

或者将checkbox设置为选中或取消选中,您应该使用:

 $('#checkbox1').prop('checked', true); // To check it $('#checkbox1').prop('checked', false); // To uncheck it 

正确的方法是:

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

如果你dynamic添加引导标签的引导属性比这将帮助你很多

  $(".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});