看板 Ajax 關於我們 聯絡資訊
我頁面上有一個<img class='abc' src='略'/> click事件並傳入class名稱如:change_bg('abc') 頁面下面放了一個jquery的blockUI,裡面有一個<img> 當我點擊頁面上的<img class='abc'/>,會打開block 而且會指定BLOCK裡的<img>的class也等於'abc' 並且指定一樣的事件,如:change_bg('abc') 讓他們兩個class一樣的目的是要這兩個<img>同步動作, 但block裡面的<img>,不是固定的,指到哪一張圖,他的class就是誰 問題在於block裡面的圖片事件change_bg('abc')會一直保留 影響到我原本頁面上的<img class='abc'>,變成change_bg('abc')執行兩次,關閉再打開 N次就會執行N次,因為是有其他用意,沒辦法改,有沒有其他的方法,讓我的 change_bg('abc'),只執行一個就好?? 原本在頁面上的change_bg('abc'),點擊block出來裡面的<img>即使指定了class='abc' 及事件,但是它就是不理原本頁面上的change_bg 所以才再指派了一樣的事件給它:change_bg('abc') 但是關閉後會造成我原本頁面上的<img class='abc'/>執行兩次change_bg('abc') 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.0.232.61
s25g5d4:有看沒有懂 有code嗎 10/30 22:14
我弄一個範例網頁,等一下 ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/30 22:37)
SansWord:看不太懂,可是直覺上覺得你要一個清除 listener的方法 10/30 23:53
PTTLSboy:對對..可以這麼說..有辦法清除後來執行的function嗎 10/31 00:20
http://myphpdiary.com/test.php 問題大概如同這個網頁描述的 ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/31 00:56)
b12031106:http://jsfiddle.net/G4pxh/ 10/31 01:48
b12031106:我想你可能要先弄清楚你的change_bg到底在做什麼 10/31 01:50
change_bg裡面做的事情是傳遞ID值進去做一些滑鼠事件 ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/31 02:24) 因為BLOCK裡的<img class='img1'是後來程式產生的,所以一開始執行的change_bg('img1') 只對原本的有用,BLOCK裡的就沒反應,所以當圖片產生的時候就補change_bg給它 有沒有方法可以解決這個問題:block裡的img不要重新給它change_bg,用一開始的change_bg ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/31 02:32) ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/31 02:33)
b12031106:http://api.jquery.com/on/ 10/31 12:57
tyf99:簡單一點就設個 global flag,func 執行就 +1 10/31 20:15
tyf99:onclick時flag歸零。 func先檢查flag,大於0就直接return 10/31 20:18
謝謝兩個,用了b12031106大的jquery .on解決了.. 出乎意料的簡單,而且有效! ※ 編輯: PTTLSboy 來自: 123.0.232.61 (10/31 21:11)
Darkland:其實 jQuery也可以用 Element 當 selector 11/01 23:42
Darkland:所以你的 change_bg 改成也接受傳 element 的話也可以解 11/01 23:43
請問是我誤會element意思嗎? 之後產生的還是不會alert change_bg($('.img1')); //傳入這樣嗎 function change_bg(id){ id.click(function(){ alert(1); }); } ※ 編輯: PTTLSboy 來自: 123.0.232.61 (11/02 00:44)
b12031106:之後產生的element並沒有包在你一開始的$('.img1')裡面 11/02 01:10
b12031106:去查一下.on跟一般的.click之類的方法有什麼不一樣 11/02 01:12
b12031106:應該就會懂了 11/02 01:12
Darkland:var img=document.createElement('img'); 11/02 13:40
Darkland:change_bg(img); 11/02 13:41
Darkland:function change_bg(element){$(element).click(...)}; 11/02 13:41