這些「副作用」是可以被制止的。
$('a').click(function(e){只要這樣,preventDefault 就可以讓所有連結失效,只能點,但不會開啟該連結。
e.preventDefault();
});
Javascript Event 還有一個特色:Bubbling,就是 Event 會向外層(父層)傳遞,每個 listen 該 Event 型別的父層物件也都會被觸發 Event Handler。
當然,這個「冒泡作用」也是可以被制止的。
$('a').click(function(e){這樣 a 所有的父層物件都不會收到 click event。
e.stopPropagation();
});
「副作用」 與「冒泡作用」是獨立的兩種行為,制止其中一種並不會影響另一種,例如對 a 呼叫 preventDefault() 制止其「副作用」,但 click event 仍會往外傳到所有父層物件,反之,對 a 呼叫 stopPropagation() 制止其「冒泡作用」,但點擊 a 仍會開啟該連結。
return false
只要在 jQuery 的 Event handler 回傳 false,就同時具有以上兩種效果。
$('a').click(function(e){效果等同於
return false;
});
$('a').click(function(e){
e.preventDefault();
e.stopPropagation();
});
沒有留言:
張貼留言