2013-02-12 181 views
1

如何在不需要包含jQuery的情況下選擇所有aform標籤?選擇沒有jQuery的所有鏈接和表單

我最終我試圖做到以下幾點:

$("a").click(function { 
    window.onbeforeunload = null; 
}); 

$("form").submit(function { 
    window.onbeforeunload = null; 
}); 

但我真的寧願不包括jQuery的(甚至Sizzle.js),如果有做一個更緊湊的方式。

+1

['document.getElementsByTagName()'](https://developer.mozilla.org/en-US/docs/DOM/element.getElementsByTagName) – millimoose 2013-02-12 17:57:07

+0

@Shpigford,請參閱我的編輯。 – Samsquanch 2013-02-12 18:24:07

回答

2

您可以使用document.querySelectorAll()這樣的:

var els = document.querySelectorAll('a'); 
for(var i=els.length; i--;) { 
    els[i].addEventListener('click', function(){ window.onbeforeunload = null; }); 
} 

類似的<form>標籤。

它適用於大多數現代瀏覽器(caniuse.com)。

+0

我得到''undefined'不是'var els = document.querySelectorAll('a');'...的函數'但如果我直接在Web Inspector中運行它,它就可以工作。某種'onload'我需要做的事情,或類似的東西? – Shpigford 2013-02-12 18:05:42

+0

@Shpigford不需要安裝。你在測試哪個瀏覽器? – Sirko 2013-02-12 18:11:45

+0

OS X上的Safari 6.0.2 – Shpigford 2013-02-12 18:13:20

1

這應做到:

var links = document.getElementsByTagName("a"); 
for (var i = 0; i < links.length; i++) { 
    links[i].addEventListener("click", function() { console.log("Clicked"); window.onbeforeunload = null; }); 
} 

爲了獲取表單提交,你可以做這樣的事情:

<script> 
    do_function() { window.onbeforeunload = null; } 
</script> 
<form action="" onsubmit="do_function()" method=""> 

編輯: 合併的兩條:

var links = document.getElementsByTagName("a"); 
for (var i = 0; i < links.length; i++) { 
    links[i].addEventListener("click", function() { console.log("Clicked"); window.onbeforeunload = null; }); 
} 
var forms = document.getElementsByTagName("form"); 
for (var i = 0; i < forms.length; i++) { 
    forms[i].addEventListener("submit", function() { console.log("Submitted"); window.onbeforeunload = null; }); 
} 

Fiddle

+0

看起來像這個非常好的瀏覽器支持:https://developer.mozilla.org/en-US/docs/DOM/element.getElementsByTagName – 2013-02-12 17:59:37

相關問題