jQuery: .attr () के माध्यम से दो विशेषताओं को जोड़ना; तरीका


104

संपादित करें:

मैंने सीखा है कि _blankनई विंडो / टैब खोलने के लिए मोबाइल ब्राउज़र पर काम नहीं करता है।

उदाहरण के लिए, यदि आपको एक नई विंडो / टैब खोलने की आवश्यकता है:

  • यह सभी ब्राउज़रों, यहां तक ​​कि मोबाइल ब्राउज़रों पर भी काम करता हैtarget="_blank" :।

  • यह मोबाइल ब्राउज़र पर काम नहीं करता है, लेकिन यह डेस्कटॉप ब्राउज़र पर काम करता हैtarget="new" :।

-

हालांकि मेरे पास यह एक काम है, मुझे यकीन नहीं है कि अगर यह करने का एक बेहतर तरीका है, या अगर मुझे जो तरीका मिला है वह सही / एकमात्र तरीका है।

मूल रूप से मैं जो कर रहा हूं वह सभी target="_new"या target="_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 (डोंट रिपीट योरसेल्फ) सिद्धांत है, इसलिए यदि मैं अपने पास मौजूद कोड को बेहतर बना सकता हूं, यदि नहीं, तो यह वही है जो यह है।

धन्यवाद।


@zzzzBov, हाँ, आप सही हैं, जानकारी के लिए धन्यवाद।
रिकार्डो ज़िया

मैं एक ही मूल्य के लिए दो विशेषताओं को सेट करना चाहता था इसलिए यह शर्म की .attr('a,b','value')बात नहीं है। मैं बस गया .attr('a',1).attr('b',1), साथ ही। नई विंडो पर अधिक निर्भर नहीं होने के नाते आपके मामले में, एक और दृष्टिकोण हो सकता है, हालांकि, @ricardozea: पी
एलिस्टेयर

जवाबों:


228

कार्य करना चाहिए:

.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) से :

Document.createElement () के माध्यम से बनाए गए इनपुट या बटन तत्व पर टाइप विशेषता को बदलने का प्रयास इंटरनेट एक्सप्लोरर 8 या पुराने पर एक अपवाद फेंक देगा।

संपादित करें :
भविष्य के संदर्भ के लिए ... एक एकल विशेषता प्राप्त करने के लिए जिसका आप उपयोग करेंगे

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

एक एकल विशेषता सेट करने के लिए जिसका आप उपयोग करेंगे

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

एकाधिक विशेषताओं को सेट करने के लिए आपको {...} में सब कुछ लपेटने की आवश्यकता है

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

संपादित करें - यदि आप चेकबॉक्स से 'चेक' की विशेषता प्राप्त / सेट करने का प्रयास कर रहे हैं ...

आपको jQuery 1.6+ के रूप में उपयोग करना होगाprop()

.prop () विधि गुण मानों को स्पष्ट रूप से पुनर्प्राप्त करने का एक तरीका प्रदान करती है, जबकि .attr () विशेषताएँ पुनः प्राप्त करती हैं।

... चेक की गई विशेषता के बारे में याद रखने के लिए सबसे महत्वपूर्ण अवधारणा यह है कि यह चेक की गई संपत्ति के अनुरूप नहीं है। विशेषता वास्तव में डिफॉल्ट चेक की गई संपत्ति से मेल खाती है और इसका उपयोग केवल चेकबॉक्स के प्रारंभिक मूल्य को सेट करने के लिए किया जाना चाहिए। चेक किया गया गुण मान चेकबॉक्स की स्थिति के साथ परिवर्तित नहीं होता है, जबकि चेक की गई प्रॉपर्टी होती है

तो एक चेकबॉक्स की जांच की स्थिति प्राप्त करने के लिए , आपको उपयोग करना चाहिए:

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

या चेकबॉक्स सेट करने के लिए जाँच या अनियंत्रित आप का उपयोग करना चाहिए:

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

1
अहा! ठीक है, यह वही है जिसका मैं जिक्र कर रहा था। स्पष्टीकरण के लिए धन्यवाद, यही कारण है कि मैंने डेरेक पर आपका जवाब चुना। धन्यवाद एडम। पुनश्च। मैं 7 मिनट में आपका उत्तर स्वीकार करूंगा, यह मुझे अभी स्वीकार नहीं करने दे रहा है।
रिकार्डो ज़िया

सुधार: आप IE में टाइप विशेषता बदल सकते हैं यदि तत्व नया बनाया गया है और अभी तक डोम में नहीं जोड़ा गया है।
आकाश काव

एकाधिक विशेषताओं को सेट करने के लिए आपको {...} ... में सब कुछ लपेटने की आवश्यकता होती है?
Gcamara14


9

यदि आप एंकर टैग में बूटस्ट्रैप विशेषताओं को गतिशील रूप से जोड़ना चाहते हैं तो इससे आपको बहुत मदद मिलेगी

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


1

घुंघराले ब्रैकेट का उपयोग करें और उन सभी विशेषताओं को डालें जिन्हें आप अंदर जोड़ना चाहते हैं

उदाहरण:

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

आपके जवाब के लिए धन्यवाद। क्या आप कृपया अपने कोड की व्याख्या कर सकते हैं या इसमें काम कर रहे या कुछ और का डेमो जोड़ सकते हैं?
रिकार्डो ज़िया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.