所有<a href=""> links</a>的防范默认的Javascript代码

时间:2014-07-18 00:29:41

标签: javascript ajax preventdefault

我正在尝试通过AJAX更新内容来仅使用Javascript来更改URL。

这是为了防止某些内容(即音乐,聊天消息框等)刷新和

  1. 清除播放音乐的地方
  2. 重置正在处理的内容,例如输入消息。
  3. 我今天刚开始尝试实现这样的东西,到目前为止我已经有了这个:

    var a = document.querySelectorAll('a')
    for (var i=0; i<a.length; i++) {
       a[i].addEventListener('click',function(event){event.preventDefault();};
    }
    return false
    

    然而,这段代码

    1. 不允许更改网址
    2. 不加载AJAX。
    3. 我的问题是:如何从刷新中取消年龄,但仍允许更改网址?

5 个答案:

答案 0 :(得分:2)

尝试类似

的内容
var a = document.getElementsByTagName('a'),
    ajax;
for (var i=0; i<a.length; ++i) {
   a[i].addEventListener('click', handleAnchor, false);
}
function handleAnchor(e){
    e.preventDefault();
    if(ajax) ajax.abort();
    ajax = new XMLHttpRequest();
    ajax.onload = updateContent;
    ajax.open("get", this.href, true);
    ajax.send();
}
function updateContent() {
    // Do something with `this.responseText`
}

答案 1 :(得分:1)

您可以尝试基于哈希的网址方案:

someurl/#param1

someurl/#param2

...

答案 2 :(得分:1)

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

for(var i=0; i < anchors.length; i++) {
    addEvent(anchors[i], 'click', preventDefault);
}

function preventDefault(e) {
    e = e || window.event;
   (e.preventDefault)? 
       e.preventDefault() : e.returnValue = false;
}

function addEvent(obj, evType, fn){ 
   if (obj.addEventListener){ 
       obj.addEventListener(evType, fn, false); 
       return true; 
   } 
   else if (obj.attachEvent){ 
       var r = obj.attachEvent("on"+evType, fn); 
       return r; 
 } else { 
       return false; 
 } 
}

尝试在prevent default for all links inside a div using jquery

上试一试

答案 3 :(得分:1)

尝试(此模式),使用jquery .load()

HTML

<div class="1">content 1</div><div class="2">content 2</div>
<a class="1" href="#">update 1</a>
<a class="2" href="#">update 2</a>

JS

$(function() {
var url = "http://example.org";
    $("a").each(function(i, el) {
        $(this).on("click", function(e) {
          e.preventDefault();
            if (i === 0) {
              $("div.1")
              .load(url + " #" + $(el).attr("class"));
             };
            if (i === 1) {
              $("div.2")
              .load(url + " #" + $(el).attr("class"));
            };
        })
    });
});

jsfiddle http://jsfiddle.net/guest271314/dL4b4/

答案 4 :(得分:0)

请尝试

 $("a[href=#]").click(function (e) {
    e.preventDefault();
 })