मैं jQuery के साथ HTML विशेषता नाम कैसे बदल सकता हूं?



(4)

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

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

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'); 

});

https://ffff65535.com

मैं उन सभी विशेषताओं के नामों को बदलना चाहूंगा जहां class="testingCase" मेरे सारे संपूर्ण 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 फ़ंक्शन है?


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

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

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


थोड़ा बाद में, लेकिन इस लिंक में एक महान jquery समारोह विस्तार है:

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

मैं इसे लिखना नहीं था लेकिन मैंने टेस्ट में जेक्यू 1.10 के साथ है। कोड लिंक से है


यहां एक सरल jquery-style प्लगइन है जो आपको एक पुनर्नामित एट्ट विधि देता है:

// 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)
        ;
};

यह उदाहरण भी है जो पुरानी विशेषता के डेटा को हटाने के लिए एक विकल्प जोड़ता है।





html