我想限制jQuery到特定的命名空間或DOM節點。目前,我做的是什麼LIK這在每一行快捷方式限制jQuery到特定的DOM節點
$('a' , $node).addClass();
$('li' , $node).removeAttr();
$('div#q' , $node).hide();
等等..有沒有什麼快捷方式/方法,我可以指定後jQuery對象的範圍將僅限於$node
。
我想限制jQuery到特定的命名空間或DOM節點。目前,我做的是什麼LIK這在每一行快捷方式限制jQuery到特定的DOM節點
$('a' , $node).addClass();
$('li' , $node).removeAttr();
$('div#q' , $node).hide();
等等..有沒有什麼快捷方式/方法,我可以指定後jQuery對象的範圍將僅限於$node
。
您可以直接更改$方法。
將$賦給返回$ node.find()的函數,就完成了。
jQuery(function($){
var $node = $('div');
var _$ = $;
$ = function(selector){
return $node.find(selector);
};
$('p:first').fadeOut();
// Return $ to its previous owner
$ = _$;
});
的jsfiddle:http://jsfiddle.net/pmYRw/1/
正是我想要的感謝!選擇這個作爲正確的答案。請在此處粘貼代碼。 –
居然沒有想到我做到了:-) –
編輯答案。還修復了一個問題,其中$ node將轉到全局名稱空間 –
你可以連你的方法,這樣,你只寫了選擇一次:
$('a' , $node).addClass('aclass').removeAttr('rel').hide();
或也保存在變量參考重用它:
var a = $('a' , $node);
a.addClass('aclass');
a.removeAttr('rel');
a.hide();
我覺得我的例子很糟糕。更新我的代碼 –
,而不是$節點(我認爲它是一個已經實例化的jquery對象),你可以將它寫成一個字符串:
$('a', '#main') #≠> all anchor tags under element with main as id
$('a', '#main li') #≠> all anchor tags al li's under element with main as id
你c一個還先初始化主元素,然後在其子範圍搜索:
var main = $('#main');
main.find('a');
main.find('li a');
這將是更高性能的。
$('a' , $node).addClass();
$('a' , $node).removeAttr();
$('a' , $node).hide();
而不是綁定$('a',$ node)幾次你可以緩存這個變量並像下面一樣使用它。這也會改善你的表現。
var node = $('a' , $node);
node.addClass();
node.removeAttr();
node.hide();
我們可以通過鏈接他們像下面
var node = $('a' , $node);
node.addClass().removeAttr().hide();
重用變量和鏈接的jQuery會對你的代碼產生巨大的影響提高該代碼多一點。
jQuery的上下文選擇實施後,對內,用'找到()',所以它會更有意義顯式調用'找到()'方法自己:'$ node.find('a')。hide()'(假設'$'前綴已經表示一個jQuery對象,否則:'$($ node).find('a')')。 –