我感到困惑的是爲什麼$(this)指向'#navigation a'對象而不是'#navigation_blob'對象?要清楚,我知道$(這)做什麼。在這個例子中,我只是困惑於範圍界定。
謝謝!
來自 「jQuery的新手忍者」:
$('#navigation a').hover(function() {
// Mouse over function
$('#navigation_blob').animate(
{width: $(this).width() + 10, left: $(this).position().left},
{duration: 'slow', easing: 'easeOutElastic', queue: false}
);
}, function() {
// Mouse out function
var leftPosition = $('#navigation li:first a').position().left;
$('#navigation_blob').animate(
{width:'hide'},
{duration:'slow', easing: 'easeOutCirc', queue:false}
).animate({left: leftPosition}, 'slow');
});
是的,我明白了,但不是'#navigation_blob'的上下文嗎?它返回一個對象不呢?我的意思是不應該內部函數覆蓋什麼*這是指的? – Eugene
是的,但它不會覆蓋。只是因爲它建立了一個新的範圍(JavaScript變量的作用域)。因此,內部函數中的'this'將引用'navigation_blob'而不會在父函數中重寫'this'。如果你想訪問父'this',你需要一個閉包:IN parent:'var self = this;'IN inner function:'$(self); //將導航爲' – Mrchief
謝謝!關於清除它=) – Eugene