jQuery - क्लास के बजाय आईडी जोड़ें


94

मैं वर्तमान jQuery का उपयोग कर रहा हूँ :

$(function() {
    $('span .breadcrumb').each(function(){
        $('#nav').addClass($(this).text());
        $('#container').addClass($(this).text());
        $('.stretch_footer').addClass($(this).text())
        $('#footer').addClass($(this).text());
    });
});

यह पृष्ठ पर 4 तत्वों में ब्रेडक्रंब में आयोजित पाठ को लागू करता है, जिससे मुझे विशेष रूप से उस पृष्ठ पर शैली की अनुमति मिलती है।

मैं एक वर्ग के बजाय एक आईडी जोड़ने की कोशिश करना चाहूंगा, मैं इसे कैसे प्राप्त कर सकता हूं?


XHTML मान्य होने के लिए एक आईडी अद्वितीय होनी चाहिए। एक आईडी को सख्त नियमों से मेल खाना चाहिए, उदाहरण के लिए, कोई रिक्त स्थान नहीं, अक्षर या _ से शुरू होता है, जिसमें केवल अक्षर, संख्याएं या सीमित संख्या में अन्य वर्ण होते हैं।
14

7
@Peter: विकिपीडिया के लिए एक लिंक जोड़ने से थोड़ा बेमानी लगता है।
nickf

के संभावित डुप्लिकेट jQuery में विशेषता जोड़ना
Makyen

जवाबों:


223

इसे इस्तेमाल करे:

$('element').attr('id', 'value');

तो यह बन जाता है;

$(function() {
    $('span .breadcrumb').each(function(){
        $('#nav').attr('id', $(this).text());
        $('#container').attr('id', $(this).text());
        $('.stretch_footer').attr('id', $(this).text())
        $('#footer').attr('id', $(this).text());
    });
});

तो आप तीन तत्वों की आईडी को बदल रहे हैं या लिख ​​रहे हैं और एक तत्व में एक आईडी जोड़ रहे हैं। आप अपनी आवश्यकतानुसार संशोधित कर सकते हैं ...


1
कैशिंग के बारे में कैसे? "यह" के 4 अलग-अलग jQuery ऑब्जेक्ट बनाने के बजाय। var text = $ (यह) .text ();
पीटर्सनडिड इट

@petersendidt: सहमत, मैंने अपने जवाब में कहा, कि उसे जरूरत के अनुसार संशोधित करने की आवश्यकता है।
सरफराज

इससे भी बेहतर: $('#nav, #container, .stretch_footer, #footer').attr('id', $(this).text());.. ऐसा नहीं है कि यहां एक आईडी का उपयोग करना एक अच्छा विचार है।
निक

यह केवल एक बार काम करेगा, जिसके बाद आईडी बदलती है ... इसके अलावा, आप एक ही आईडी को ओवरराइड करते रहते हैं, इसलिए आप इसे $('#nav, #container, .stretch_footer, #footer').attr('id', $('span .breadcrumb:first').text())(या last, के लिए .stretch_footer) भी कर सकते हैं। वैसे भी, यह अजीब है।
कोबी

26

यह ध्यान रखें कि किसी भी आईडी को अधिलेखित कर दिया गया है जो पहले से ही है:

 $(".element").attr("id","SomeID");

कारण addClassमौजूद है, क्योंकि एक तत्व में कई कक्षाएं हो सकती हैं, इसलिए आप आवश्यक रूप से पहले से सेट की गई कक्षाओं को अधिलेखित नहीं करना चाहेंगे। लेकिन अधिकांश विशेषताओं के साथ, किसी भी समय केवल एक ही मूल्य की अनुमति है।



3

यदि आप इसे बदलने के बजाय 'id में जोड़ना चाहते हैं'

वर्तमान आईडी को पहले कैप्चर करें, फिर अपनी नई आईडी संलग्न करें। विशेष रूप से ट्विटर बूटस्ट्रैप के लिए उपयोगी है जो उनके रूपों पर इनपुट राज्यों का उपयोग करता है।

    new_id = '{{old_id}} inputSuccess';
    old_id = that.attr('id');
    that.attr('id', new_id.replace( /{{old_id}}/ig,old_id));

यदि आप नहीं करते हैं - आप पिछले सेट के किसी भी गुण को खो देंगे।

hth,


एक मान्य तत्व में केवल एक ही आईडी हो सकती है। stackoverflow.com/questions/192048/…
कर्नल

3

मैं इसे कॉफ़ीस्क्रिप्ट में कर रहा हूं

booking_module_time_clock_convert_id = () ->
  if $('.booking_module_time_clock').length
    idnumber = 1
    for a in $('.booking_module_time_clock')
      elementID = $(a).attr("id")
      $(a).attr( 'id', "#{elementID}_#{idnumber}" )
      idnumber++
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.