我們?cè)谑褂胘Query操作Dom元素的時(shí)候可能會(huì)遇到一個(gè)click事件不觸發(fā)的問題,這種情況可能由于以下幾個(gè)原因所導(dǎo)致:
1.元素不存在
if($("button").length >0){ $("button").click(function(){ // do something }); }
在綁定click事件之前,我們需要判斷元素是否存在。
2.元素被遮擋
$("button").click(function(){ // do something }); $("button").css("position","relative"); $("button").css("z-index","-1");
對(duì)于被遮擋的元素,click事件是不會(huì)被觸發(fā)的。需要注意的是,只有以較高層級(jí)(Z-index)顯示的元素才能響應(yīng)click事件。
3.元素被禁用
$("button").click(function(){ // do something }); $("button").attr("disabled","disabled");
被禁用的元素?zé)o法響應(yīng)click事件,需要解除禁用。
4.直接調(diào)用click()方法
$("button").click(function(){ // do something }); $("button").click();
直接調(diào)用click()方法可以觸發(fā)click事件,但是如果在事件回調(diào)中獲取了事件觸發(fā)源(this),則會(huì)出現(xiàn)undefined的錯(cuò)誤。