[問題] 研究jq的each時產生的一些疑問

作者: NullLife (廢材大叔有點累)   2015-01-30 01:18:12
其實是在研究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);
});
};
以上四點是我的疑問,懇請大大解惑<(_ _)>
作者: Ammenze (藍天白雲)   2015-01-30 09:57:00
target是html element,用$包起來是jquery物件,兩種取id方式本來就不同
作者: onininon (萬)   2015-01-30 11:49:00
推樓上
作者: NullLife (廢材大叔有點累)   2015-01-30 21:06:00
了解,謝謝。那請問q3&q4呢?
作者: mrbigmouth (大嘴先生)   2015-01-30 21:17:00
q3那個target是html element啊 沒有attr這個method當然就exception了q4能整合在一起獨立呼叫最快 不然沒多少差別method chain這種作法在效率上也許快一些些 但可乎略啊 前提是你像q4那樣已經先把jq物件存成變數了如果你是$("div").append("xx")這樣...那串接呼叫就較快 因為後面的串接呼叫都省掉了找div的功夫
作者: NullLife (廢材大叔有點累)   2015-02-01 15:04:00
對吼,真是點醒我了 感謝樓上大大~

Links booklink

Contact Us: admin [ a t ] ucptt.com