作者NullLife (政) (哀莫大於心死)
看板Ajax
標題[問題] 研究jq的each時產生的一些疑問
時間Fri Jan 30 01:18:12 2015
其實是在研究jq plugin時發現的一些問題:
html元件:
<div id="target1" class="t"></div>
<div id="target2" class="t"></div>
script呼叫:
$('.t').myMethod();
jq plugin:
$.fn.myMethod = function() {
return this.each(function(index, target) {
var a = $(this).id; // q1.為什麼這裡取不到id,而下面的方式取的到id?
var b = $(this).attr('id');
var c = target.id; // q2.這個target跟$(this)有什麼差別?
// 不是都指我選到的div嗎?
// var d = target.attr('id'); // q3.為什麼這裡會變成undefined exception?
var div = $('<div/>');
div.append(index);
div.append(', ' + a); // q4.獨立呼叫跟串接呼叫有什麼效率上的差別?
div.append(', ' + b)
.append(', ' + c)
// .append(', ' + d)
.append('<br/>');
$(this).append(div);
});
};
以上四點是我的疑問,懇請大大解惑<(_ _)>
--
我以為認真去做就能實現我的夢
以為寫首好歌走路就能抬起頭
以為騎摩托車旅行就能變英雄
黃玠
現在的我 失去了衝動
香格里拉
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.193.169
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1422551896.A.DE0.html
推 Ammenze: target是html element,用$包起來是jquery物件,兩種取id 01/30 09:57
→ Ammenze: 方式本來就不同 01/30 09:58
推 onininon: 推樓上 01/30 11:49
→ NullLife: 了解,謝謝。那請問q3&q4呢? 01/30 21:06
→ mrbigmouth: q3那個target是html element啊 沒有attr這個method 01/30 21:17
→ mrbigmouth: 當然就exception了 01/30 21:17
→ mrbigmouth: q4能整合在一起獨立呼叫最快 不然沒多少差別 01/30 21:18
→ mrbigmouth: method chain這種作法在效率上也許快一些些 但可乎略 01/30 21:18
→ mrbigmouth: 啊 前提是你像q4那樣已經先把jq物件存成變數了 01/30 21:19
→ mrbigmouth: 如果你是$("div").append("xx")這樣...那串接呼叫就較 01/30 21:19
→ mrbigmouth: 快 因為後面的串接呼叫都省掉了找div的功夫 01/30 21:20
→ NullLife: 對吼,真是點醒我了 感謝樓上大大~ 02/01 15:04