作者hera1016 ()
看板Ajax
標題[問題] 如何判斷element裡是否已定義event
時間Thu May 13 17:07:58 2010
我的目標是插code到一個網頁
希望該網頁的某一個element發生event時 可以執行某些動作
但問題是 該網頁有一排tab 是利用javascript換頁的
我的target element不是一開始就存在 它可能是按下某個tab後才出現
所以出現之後 才能add event listener到該element
(舉例:
http://tinyurl.com/3ydj9jg
假設我的target element是按下"tab媒體情報"後裡面的各家媒體)
我目前用一個有點暴力的方法去做
先用jQuery的All Selector選取網頁裡的每個element
當這些elements有被click時(即對應到換頁)
就去check target element是否存在
若存在 則再add event listener到它身上
但現在有個問題是 可能tab外面又包了其他東西
所以雖然可能只點一次tab click function會發生很多遍
導致我的target element被加了很多event listner
會影響我接下來的動作
附上code
$(document).ready( function() {
$("*").click( function() {
var target = $("div's id");
$.each(target, function(){
$(this).click(function(){
alert($(this).text());
});
});
})
});
執行後就會變成 click target element時 alert會出現很多遍 囧...
我目前想到的解決方式是 假設element有定義click的event listner 就不要再加了
但不知道code要怎麼寫 >///<
或著版友有其他更好的方法嗎?
非常感謝<(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.215.200
3F:→ hera1016:大感謝樓上 問題已解!!!!!!(L) 05/13 21:01
4F:→ TonyQ:這種情形用live是比較適合的. 05/14 03:36
5F:→ hera1016:不太懂樓上的意思耶 @_@? 05/14 12:47
6F:推 wxyy:.delegate() 跟 .live() 都可以解決這個問題 05/14 16:46
7F:→ wxyy:不過優缺點 就要另外請教高手解釋了.... 05/14 16:47