jQuery:禁用div中的所有链接 - 替换为内部内容

时间:2010-05-20 15:17:20

标签: jquery

我想禁用div中的所有链接,并将其替换为那里的内容。

<div><a href="/blah.html">My super link</a></div>

<div>My super link</div>

谢谢

3 个答案:

答案 0 :(得分:5)

你可以使用.replacewith()和一个函数来完成它,如下所示:

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

You can see a quick demo here

答案 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);
  }         
}