看板 Ajax 關於我們 聯絡資訊
我在jQuery Element上用陣列的方式來表示 ex: var item=new array("a","b","c","d"); //a,b,c,d是範例. 之後實作click事件 1. $(function(){ for(var i=0;i<item.length;i++) $("#"+item[i]).attr("disabled","disabled"); for(var i=0;i<item.length;i++) { if((i+1)<item.length) $("#"+item[i]).click(function(){$("#"+item[i+1]).removeAttr("disabled");}); } }); 這樣是沒反應的... 但是我把它改寫成 2. $(function(){ for(var i=0;i<item.length;i++) $("#"+item[i]).attr("disabled","disabled"); $("#"+item[0]).click(function(){$("#"+item[1]).removeAttr("disabeld");}); $("#"+item[1]).click(function(){$("#"+item[2]).removeAttr("disabled");}); $("#"+item[2]).click(function(){$("#"+item[3]).removeAttr("disabled");}); }); 這樣子就ok,能執行成功.. 後來有測試一下,在 1. 上面click callback function內執行 alert($("#"+item[i+1]).attr("disabled")); 結果是undefine 我有試過把.removeAttr("disabled")改成.attr("disabled","")也是沒成功 像這種情況到底是什麼原因呢.. 謝謝各位.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.46.184
wa120:我也有試過把.click()改成.bind("click",function(){}) 09/18 09:26
wa120:結果也是一樣.... 09/18 09:26
itisjoe:我沒測過 但是不是i+1的問題 他變成字串而不是數字+1 09/18 11:03
wa120:也有試過parseInt().... 真的很詭異= = 09/18 11:06
itisjoe:i吃到跑完迴圈的i 所以每個click的callback裡的i都等於4 09/18 11:34
TonyQ:嗯 這是個scope 的問題,就跟itisjoe講得一樣。 09/18 12:43
grence:http://goo.gl/fXko closure. 09/19 01:01
TonyQ:下面 Dusan 的開砲好有趣 XD 09/19 10:06