最近在做專案的時候使用了Jquery~新手學習jquery.~遇到了一些"奇怪"的問題(各位大神別拍磚).
感謝ClassYuan老闆的支持..ClassYuan的blog.http://www.classyuan.com/.下面列舉一些:
1.跟HTML元素載入事件的時候,會在載入的時候同時執行該事件。
錯誤代碼:
view source
PRint?1 $("#btnLoad").bind("click",GetProduct());
正確程式碼
view source
print?1 $("#btnLoad").bind("click", function() { GetProduct() });
我在這段程式碼,忽略了Bind這個方法.Api的解釋是bind(type,[data],fn)
我錯誤的講fn當做一個簡單的function..導致這段程式碼會在載入的時候執行一次這個fn..
這是一個書寫格式的疏忽.希望知道原因的大神可以指點。
2變數作用域的問題.(貌似這個不是jquery的問題.而是js跟.net的差別..)
view source
print?1 function text() {
2 for (var i = 0; i < 3; i++) {
3 $("<a>刪除</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCSS").bind("click", function () { tes(i) }).appendTo(".div_list");
4 }
5 }
6 function tes(id) {
7 alert(id);
8 }
這個函數.我想讓他alert出對應的id..結果..答案很同意..3個<a>標籤的函數..彈出來都是3..
看了一下..明白了
變數作用域的問題,傳個tes函數的參數是循環結束後i的值,所以全部是3。
這一點似乎和.net不一樣。
最後接解決方案- -..直接吧$(this)傳遞進去了
3.事件執行順序的問題
view source
print?1 <a target="_blank" title="Iphone" >
2 <img id="proImg7_2" src="" alt="Iphone" style="width:70px; height:60px; border:none;" />
3 </a>
給這張圖片綁定了onclick事件,事件的內容是給<img>標籤的parent增加一個href屬性.
但是事件執行完畢之後,將會直接跳到a標籤的連結。經過分析.
應為click是在href之前執行的,也就是當點擊圖片的時候A標籤已經有了href,然後同時又觸發了A標籤.
解..去掉<img>外層的a標籤..然後修改事件
view source
print?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
以上是我這個新手第一次使用jquery所遇到的問題..留在這裡.當做成長的歷程..各位大神老鳥..別噴吖..