2010-05-20 7 views

Répondre

5

Vous pouvez le faire en utilisant .replacewith() et une fonction, comme ceci:

​$("div a").replaceWith(​​​​function() { return $(this).text();​ });​ 

You can see a quick demo here

+0

Est-ce que cela fonctionnera pour les images et autres contenus? – Chris

+0

@Chris - Utilisez '.contents()' au lieu de '.text()' dans ce cas, voir une démo ici: http://jsfiddle.net/qd3E2/2/ –

4

Hmm - le mien est semblable aux autres réponses des plus rapides dactylographes, mais j'aurais pensé html() aurait été ce que vous vouliez utiliser:

$('div a').each(function() { 
    $(this).replaceWith($(this).html()); 
}); 
+0

+1 - Alors que le nôtre fonctionne pour l'exemple , cela fonctionnerait dans tous les cas applicables. –

2

Je sais que cette question est vieux, mais je accompli cela en procédant comme suit:

1 - sélectionner tous les points d'ancrage que je voulais désactiver
2 - suppression de tous les événements associés à l'ancre
3 - remplacer la valeur de l'attribut href avec un #
4 - ajouter un événement click à l'ancre qui ne fait rien

L'exemple de code ci-dessous est extrait de mon plugin. Le plugin a également le code permettre à l'ancre de revenir. Cela peut vous donner des idées.

Vous pouvez également télécharger mon plugin à (http://www.dougestep.com/dme/jquery-disabler-widget) et l'utiliser ou découper ce dont vous avez besoin.

$('a').each(function(e) { 
    // disable events on anchor 
    this._disableEvents($(this)); 

    // save off the HREF value 
    var href = inp.attr("href"); 
    if (href != undefined) { 
    // save the HREF attribute value and remove the value 
    inp.data(dataAnchorHref, href); 
    inp.attr("href", "#"); 
    } 
    // override the click event for the anchor 
    inp.on("click", function(e) { 
    e.preventDefault(); 
    }); 

    // decorate the anchor with a disabled look 
    inp.addClass('ui-state-disabled'); 

}); 

_disableEvents : function(inp) { 
    var de = $.Event("disableEvents"); 
    this._trigger("disableEvents", de, inp); 
    if (de.isDefaultPrevented()) { return; } 

    var widgetEventPrefix = this.widgetEventPrefix; 
    // jQuery adds an "events" data attribute on the element when events are registered 
    var events = inp.data("events"); 
    if (events != undefined) {  
    var savedEvents = []; 
    // loop through each event found on the element... 
    $.each(events, function(eventName, handlers) { 
     $.each(handlers, function(index) { 
     var handler = handlers[index]; 
     if (handler != undefined) { 
     // save the event and handler 
     var eventObj = { 
      'eventName' : eventName, 
      'handler' : handler 
     }; 
     if (eventName.indexOf(widgetEventPrefix) < 0) { 
      // unbinding a non widget event 
      savedEvents.push(eventObj); 
      inp.unbind(eventName); 
     } 
     }    }); 
    }); 
    // store the saved events as a data attribute on the element 
    inp.data(dataSavedEvents, savedEvents); 
    }   
} 
+0

+1 pour donner les grandes lignes d'une solution ainsi que le lien pour le paquet complet :-) – kleopatra

Questions connexes