作者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