选择没有jQuery的所有链接和表单

时间:2013-02-12 17:54:53

标签: javascript jquery selector sizzle

如何选择所有aform代码而无需包含jQuery?

我最终尝试执行以下操作:

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

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

但我真的不想包含jQuery(甚至是Sizzle.js),如果有更紧凑的方法可以做到这一点。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分: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