jQuery: .attr () aracılığıyla iki öznitelik ekleme; yöntem


105

DÜZENLE:

_blankYeni pencereler / sekmeler açmak için mobil tarayıcılarda dışında başka bir değer kullanmanın ÇALIŞMADIĞINI öğrendim .

Örneğin, yeni bir pencere / sekme açmanız gerekirse:

  • Bu işler tüm tarayıcılar, hatta mobil tarayıcılarda: target="_blank".

  • Bu işe yaramazsa mobil tarayıcılarda ama çalışır masaüstü tarayıcılarda: target="new".

-

Bunu çalıştırmış olsam da, bunu yapmanın daha iyi bir yolu olup olmadığından veya bunu elde etme yolumun doğru / tek yol olup olmadığından emin değilim.

Temel olarak yaptığım şey, tüm target="_new"veya target="_blank"öznitelik değerlerini olarak değiştiriyor target="nw", bu şekilde yalnızca bir yeni pencere açık ve bunun içinde kullanıcıyı birden çok pencereyle boğmamak için diğer tüm yeni pencereler açılacak.

Ayrıca " Yeni bir pencerede açılır " title=""özelliği de ekliyorum .

Yani yarattığım çözüm şuydu:

$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');

İki .attr();yönteme dikkat edin .

Bir öğeye iki nitelik eklemenin doğru yolu bu mu?

Denedim .attr('target','nw','title','Opens in a new window')ama işe yaramadı.

Sormamın nedeni DYR (Kendini Tekrar Etme) ilkesi, bu yüzden sahip olduğum kodu geliştirebilirsem, harika, değilse, o zaman budur.

Teşekkürler.


@zzzzBov, evet, haklısın, bilgi için teşekkürler.
Ricardo Zea

İki özelliği aynı değere sahip olacak şekilde ayarlamak istedim, bu yüzden .attr('a,b','value')işe yaramaz. Ben de yerleştim .attr('a',1).attr('b',1). Sizin durumunuzda yeni pencerelere daha az bağımlı olmak başka bir yaklaşım olabilir, yine de @ricardozea: P
Alastair

Yanıtlar:


229

Çalışmalı:

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

Not :

" Birden fazla özniteliği ayarlarken öznitelik adlarının etrafındaki tırnak işaretleri isteğe bağlıdır.

UYARI : "Sınıf" özelliğini ayarlarken, her zaman tırnak işaretleri kullanmalısınız!

.Attr için jQuery belgelerinden (Eylül 2016) :

Document.createElement () aracılığıyla oluşturulan bir giriş veya düğme öğesindeki tür özniteliğini değiştirmeye çalışmak, Internet Explorer 8 veya daha eski sürümlerde bir istisna atar.

Düzenleme :
İleride referans olması için ... Tek bir Kullanacağınız özellik için

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

İçin tek set özelliğini kullanırsınız

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

Birden çok ayarlamak için niteliklerini sen her şeyi sarmak gerekiyor {...}

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

Düzenle - Bir onay kutusundan "işaretli" özelliği almaya / ayarlamaya çalışıyorsanız ...

JQuery 1.6+ sürümünden itibaren kullanmanız gerekecekprop()

.prop () yöntemi, özellik değerlerini açıkça almak için bir yol sağlarken .attr () öznitelikleri alır.

... kontrol edilen nitelik hakkında hatırlanması gereken en önemli kavram, kontrol edilen mülke karşılık gelmemesidir. Öznitelik aslında defaultChecked özelliğine karşılık gelir ve yalnızca onay kutusunun başlangıç ​​değerini ayarlamak için kullanılmalıdır. İşaretli özellik değeri, onay kutusunun durumu ile değişmez

Bu nedenle , bir onay kutusunun işaretli durumunu almak için şunları kullanmalısınız:

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

Veya onay kutusunu işaretli veya işaretsiz olarak ayarlamak için şunları kullanmalısınız:

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

1
Aha! Tamam, bahsettiğim şey buydu. Açıklama için teşekkürler, bu yüzden cevabını Derek'inkine tercih ettim. Teşekkürler Adam. PS. Cevabınızı 7 dakika içinde kabul edeceğim, şu anda kabul etmeme izin vermiyor.
Ricardo Zea

Düzeltme: Öğe yeni oluşturulmuşsa ve henüz DOM'a eklenmemişse, IE'de tür özelliğini değiştirebilirsiniz.
Akash Kava

Birden fazla öznitelik ayarlamak için her şeyi {...} içine almanız gerekir ... Anahtarların tırnak içinde olması gerekmez mi?
Gcamara14

27

doğru yol şudur:

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

9

Bağlantı etiketine dinamik olarak önyükleme özniteliklerini eklemeniz,

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

2

Bunun gibi bir şey:

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

1

Küme parantezleri kullanın ve eklemek istediğiniz tüm öznitelikleri içine koyun

Misal:

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

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"},
];

Cevabın için teşekkürler. Lütfen kodunuzu açıklayabilir misiniz veya çalıştığını gösteren bir demo ekleyebilir misiniz?
Ricardo Zea
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.