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);
}
}
Est-ce que cela fonctionnera pour les images et autres contenus? – Chris
@Chris - Utilisez '.contents()' au lieu de '.text()' dans ce cas, voir une démo ici: http://jsfiddle.net/qd3E2/2/ –