112

编辑:

我了解到,使用 , 以外的其他值_blank不适用于移动浏览器打开新窗口/标签。

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

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

  • 这不适用于移动浏览器,但适用于桌面浏览器:target="new".

--

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

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

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

所以我创建的解决方案是这个:

$("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(不要重复自己)原则,所以如果我可以改进我拥有的代码,很好,如果没有,那就是它。

谢谢。

4

6 回答 6

251

应该管用:

.attr({
    target:"nw", 
    title:"Opens in a new window",
    "data-value":"internal link" // attributes which contain dash(-) should be covered in quotes.
});

注意

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

警告:设置“类”属性时,必须始终使用引号!

来自.attr的 jQuery 文档(2016 年 9 月):

尝试更改通过 document.createElement() 创建的输入或按​​钮元素的类型属性将在 Internet Explorer 8 或更早版本上引发异常。

编辑
供将来参考...要获得您将使用的单个属性

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

设置单个属性,您将使用

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

设置多个属性,您需要将所有内容包装在 { ... }

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

编辑 - 如果您尝试从复选框获取/设置“已选中”属性...

你需要使用prop() jQuery 1.6+

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

...关于 checked 属性要记住的最重要的概念是它不对应于 checked 属性。该属性实际上对应于 defaultChecked 属性,应该只用于设置复选框的初始值。选中的属性值不会随着复选框的状态而改变,而选中的属性会

因此,要获得复选框的选中状态,您应该使用:

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

或者要将复选框设置为选中或未选中,您应该使用:

$('#checkbox1').prop('checked', true); // To check it
$('#checkbox1').prop('checked', false); // To uncheck it
于 2012-10-22T15:10:54.377 回答
29

正确的方法是:

.attr({target:'nw', title:'Opens in a new window'})
于 2012-10-22T15:11:20.933 回答
13

如果您在锚标记中动态添加引导属性,那么这将对您有很大帮助

 $(".dropdown a").attr({
      class: "dropdown-toggle",
     'data-toggle': "dropdown",
      role: "button",
     'aria-haspopup': "true",
     'aria-expanded': "true"
});
于 2017-02-24T06:26:25.293 回答
3

像这样的东西:

$(myObj).attr({"data-test-1": num1, "data-test-2": num2});
于 2017-01-08T21:53:57.857 回答
2

使用大括号并将您要添加的所有属性放入其中

例子:

$('#objId').attr({
    target: 'nw',
    title: 'Opens in a new window'
});
于 2018-08-31T09:22:52.603 回答
0
Multiple Attribute

var tag = "tag name";
createNode(tag, target, attribute);

createNode: function(tag, target, attribute){
    var tag = jQuery("<" + tag + ">");
    jQuery.each(attribute, function(i,v){
        tag.attr(v);
    });
    target.append(tag);
    tag.appendTo(target);
}
var attribute = [
    {"data-level": "3"},
];
于 2019-02-25T05:18:30.167 回答