2008-11-25 5 views
15

मैं उन सभी विशेषताओं को बदलना चाहता हूं जहां class="testingCase" मेरे पूरे HTML दस्तावेज़ में।मैं jQuery के साथ HTML विशेषता नाम कैसे बदल सकता हूं?

उदा। परिवर्तित करें:

<a class="testingCase" href="#" title="name of testing case">Blabla</a> 
<a class="testingCase" href="#" title="name of another testing case">Bloo</a> 
इस के लिए

:

<a class="testingCase" href="#" newTitleName="name of testing case">Blabla</a>` 
<a class="testingCase" href="#" newTitleName="name of another testing case">Bloo</a>` 

मैं एक खोज के बारे में सोच और की जगह है, लेकिन है कि कुछ इतना आसान के लिए कोड का एक बहुत लगता है था। क्या इस के लिए एक jQuery फंक्शन है या एक साधारण विधि है?

उत्तर

31

मुझे नहीं लगता कि आप "का नाम बदलने" कर सकते हैं एक विशेषता है, लेकिन आपने नई विशेषताएं बना सकते हैं और अन्य लोगों को दूर कर सकते हैं ...

$('a.testingCase[title]').each(function() { 
    var $t = $(this); 
    $t 
     .attr({ 
      newTitleName : $t.attr('title'), 
     }) 
     .removeAttr('title') 
    ; 
}); 

संपादित करें: बिट यह केवल a तत्वों का चयन करता है कि में जोड़ा class="testingCase"

8

साथ मुझे नहीं लगता कि आप एक विशेषता नाम बदल सकते हैं लेकिन आप क्या कर सकते है:

  • प्राप्त सभी <a> साथ टैग एक शीर्षक विशेषता;
  • उनमें से foreach, शीर्षक के समान मूल्य के साथ एक नयाTitleName विशेषता बनाएँ;
  • फिर शीर्षक विशेषता हटाएं।

JQuery आप करते हैं कि निर्मित कार्यों इस तरह के साथ:

/* get all <a> with a "title" attribute that are testingCase 
then apply an anonymous function on each of them */ 

$('a.testingCase[title]').each(function() { 

    /* create a jquery object from the <a> DOM object */ 
    var $a_with_title = $(this);  

    /* add the new attribute with the title value */ 
    $a_with_title.attr("newTitleName", $a_with_title.getAttribute('title')); 

    /* remove the old attribute */ 
    $a_with_title.removeAttr('title'); 

}); 
2

यहाँ एक सरल jQuery शैली प्लगइन है कि आप एक renameAttr विधि देता है:

// Rename an entity attribute 
jQuery.fn.renameAttr = function(oldName, newName) { 
    var args = arguments[0] || {}; 
    var o = $(this[0]) 

     o 
     .attr(
      newName, o.attr(oldName) 
     ) 
     .removeAttr(oldName) 
     ; 
}; 

वहाँ भी this example है जो पुरानी विशेषता के लिए डेटा को हटाने के लिए एक विकल्प जोड़ता है।

jQuery.fn.extend({ 
  renameAttr: function(name, newName, removeData) { 
    var val; 
    return this.each(function() { 
      val = jQuery.attr(this, name); 
      jQuery.attr(this, newName, val); 
      jQuery.removeAttr(this, name); 
      // remove original data 
      if (removeData !== false){ 
        jQuery.removeData(this, name.replace('data-','')); 
      } 
    }); 
  } 
}); 

उदाहरण

// $(selector).renameAttr(original-attr, new-attr, removeData); 
  
// removeData flag is true by default 
$('#test').renameAttr('data-test', 'data-new'); 
  
// removeData flag set to false will not remove the 
// .data("test") value 
$('#test').renameAttr('data-test', 'data-new', false); 

मैं यह लिख नहीं किया:

4

एक छोटी सी बाद में, लेकिन इस link एक महान jQuery समारोह एक्सटेंशन है। लेकिन मैंने परीक्षण किया JQ 1.10 के साथ है। कोड लिंक से है।

1

एक लाइनर

$('selector').replaceWith($('selector')[0].outerHTML.replace("oldName=","newName=")); 

मेरे लिए महान काम किया जब मैं अपने गुण के सभी से एक उपसर्ग पट्टी करने के लिए आवश्यक

$('selector').replaceWith($('selector')[0].outerHTML.(/prefix\-/g,"")); 
संबंधित मुद्दे

 संबंधित मुद्दे