4

重複の可能性:
Javascriptのリンク('a')オブジェクトのデフォルトの動作をオーバーライドします

ホームページのページリンク全体を読み取り専用にする(クリックできない、href=#またはhref="javascript:void()"ユーザーの操作に基づく)ための最良の方法は何ですか。

これを実現するために、JavascriptとCSSのみを使用したかったのです。

4

7 に答える 7

9

Only css

a {
    pointer-events: none;
    cursor: default;
}
于 2012-10-05T10:50:08.073 に答える
5

試す

jqueryで

$("a").click(function() { return false; });

バニラjs

        var elements = document.getElementsByTagName("a");
        for (var i = 0; i < elements.length; i++) {
            elements[i].onclick = function () { return false; }
        }
于 2012-10-05T10:49:35.347 に答える
2

このようなものが動作するはずです

var anchors = document.getElementsByTagName('a');

for(var i=0,len=anchors.length;i<len;i++){
   anchors[i].href = '#';
}
于 2012-10-05T10:51:21.993 に答える
2

これは、イベント委任技術を使用したCMSによる素晴らしいソリューションです。

document.onclick = function (e) {
  e = e ||  window.event;
  var element = e.target || e.srcElement;

  if (element.tagName == 'A') {
    someFunction(element.href);
    return false; // prevent default action and stop event propagation
  }
};

デモ

于 2012-10-05T11:09:44.470 に答える
0

jQuery

$("a").on("click",function(e) { e.preventDefault();   
   // anything you want to do on click
});
于 2012-10-05T10:53:02.360 に答える
0

皮切りに:

links = document.getElementsByTagName('a')

それで:

for (var i=0; i<links.length; ++i) {
    // disable a link, for instance like this
    links[i].href = "javascript:void()"
}
于 2012-10-05T10:50:40.283 に答える
0

replaceChildの使用はどうですか- NS6/IE6/Chrome1/FX1 など以降のすべてのブラウザーで動作します。

デモ

プレーン JS:

window.onload=function() {
  var anchors = document.getElementsByTagName('a');

  for(var i=anchors.length-1;i>=0;i--){
    var span = document.createElement("span");
    span.innerHTML=anchors[i].innerHTML;
    anchors[i].parentNode.replaceChild(span,anchors[i])
    span=null;
  }
}

または、ページのコメントでの私の最初の提案:

window.onload=function() {
  var anchors = document.getElementsByTagName('a');
  for(var i=anchors.length-1;i>=0;i--){
    anchors[i].onclick=function() { return false }
  }
}
于 2012-10-05T11:06:53.827 に答える