作者wa120 (哇120)
看板Ajax
標題[問題] jquery click事件沒作用
時間Sat Sep 18 09:24:54 2010
我在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
→ TonyQ:下面 Dusan 的開砲好有趣 XD 09/19 10:06