我在玩jQuery $.data
函數,並且遇到了一些麻煩。如果我這樣做:
(function($){
$.fn.testData = function() {
var obj = $(this);
obj.text($.data(obj,'test'));
}
})(jQuery);
var element = $("#test");
$.data(element,'test','hej');
element.testData();
這是未定義的。爲什麼?
編輯:
如果我用elem.data(key)
功能,這樣它工作得很好:
(function($){
$.fn.testData = function() {
var obj = $(this);
obj.text(obj.data('test'));
}
})(jQuery);
var element = $("#test");
element.data('test','hej');
element.testData();
,但我只看到了保羅的愛爾蘭,其聲稱elem.data
是慢10倍的幻燈片比$.data(elem)
: http://paulirish.com/2009/perf/
我認爲你是誤解了演示文稿。他意味着如果你已經有* DOM元素引用,那麼直接將它傳遞給「$ .data()」要比將其包裝在jQuery對象中並使用「.data()」方法更快。既然你包裝你的對象(「$(this)」),無論如何,你根本沒有獲得性能優勢。 – Pointy 2011-04-22 12:17:59
另外,爲選定的對象調用'.data'使得你的代碼更加清晰(至少對我來說) – 2011-04-22 12:19:21