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



编辑:

我了解到,使用_blank以外的其他值,在移动浏览器上不起作用以打开新的Windows/Tabs。

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

  • 这可以在所有浏览器上,甚至移动浏览器: target="_blank"

  • 这在移动浏览器上不起作用,但它确实有效在桌面浏览器上:target="new"

-

尽管我有这个工作,但我不确定是否有更好的方法,或者我获得的方法是正确的/唯一的方法。

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

我还添加了" "在新窗口中打开" 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(不要重复自己)原则,因此,如果我可以改进我拥有的代码,如果没有,那么它就是它。

谢谢。

应该有效:

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

to 设置单个属性您将使用

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

to 设置多个属性您需要包装{...}

中的所有内容
$(".something").attr( { title:"Test", alt:"Test2" } );

编辑 - 如果您想从复选框中获取/设置"已检查"属性...

您将需要使用 prop() jquery 1.6

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

...关于检查属性的最重要概念是它与检查属性不符。该属性实际上对应于DefaultChecked属性,应仅用于设置复选框的初始值。检查的属性值不会随复选框的状态而变化,而检查属性确实

SO 获得复选框的检查状态,您应该使用:

$('#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'
});
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"},
];

最新更新