我想禁用div中的所有链接,并将其替换为那里的内容。
即
<div><a href="/blah.html">My super link</a></div>
到
<div>My super link</div>
谢谢
答案 0 :(得分:5)
你可以使用.replacewith()
和一个函数来完成它,如下所示:
$("div a").replaceWith(function() { return $(this).text(); });
答案 1 :(得分:4)
嗯 - 我和其他快速打字员的答案类似,但我原以为html()
会是你想要使用的:
$('div a').each(function() {
$(this).replaceWith($(this).html());
});
答案 2 :(得分:2)
我知道这个问题很老,但我通过以下方式完成了这个:
1 - 选择我想要禁用的所有锚点
2 - 删除与锚相关的所有事件
3 - 用#
替换href属性值
4 - 向没有任何内容的锚点添加点击事件
下面的代码示例是从我的插件中删除的。该插件还有代码
再次启用锚点。它可能会给你一些想法。
您也可以在(http://www.dougestep.com/dme/jquery-disabler-widget)下载我的插件并使用它或从中删除您需要的内容。
$('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);
}
}