2009-12-16 21 views
0

我知道可以用更多的JavaScript語法來編寫jQuery而不是所有的鏈接(這很棒)。很難找到一篇教程來幫助那些想要使用較少鏈接腳本的人理解,因此我可以在哪裏找到任何類型的教程?jQuery沒有鏈?

儘管連鎖並沒有壞,但它需要一條有效的學習曲線。我有一些JavaScript經驗,如果我可以重新使用我現有的知識(也就是懶惰在嚴格快速移動的工作環境中學習新東西),那將是非常棒的。 PS:我通常使用較少的鏈接框架,例如Adobe Spry Framework(可悲),所以我希望我可以在jQuery上編寫代碼時使用類似的方法。

回答

4

由於鏈的每個部分都返回一個jQuery對象,因此可以將鏈分解成單獨的部分。

所以,這...

$("<div>inner</div>") 
    .appendTo("<div>outer</div>") 
    .appendTo("body"); 

是完全一樣的:

var myDiv = $("<div>inner</div>"); 
myDiv.appendTo("<div>outer</div>"); 
myDiv.appendTo("body"); 

但請相信我,一旦你習慣了它,它會成爲第二天性。檢查出this article的一些更多的意見...

0

這是值得懷疑的,你會發現這樣的文件。

只需用適當的選擇器替換鏈接的調用即可。

$('#myId').call(blah) 
      .chain(blah) 
      .chain(blah) 

var $obj = $('#myId'); 
$obj.call(blah); 
$obj.chain(blah); 
... 
+1

對於複雜的選擇器,您希望將生成的jQuery對象放入局部變量中。在這裏做一個簡單的逐元素選擇可能是好的,但其他類型可能會有嚴重的性能命中以及留下大量的複製/粘貼代碼。 –

+0

我同意。我改變了我的答案。 –

1

關於jQuery的偉大的事情是,core jQuery object的大部分功能將返回另一個jQuery對象與現有相同的功能。所以,你可以

var image = $("#myImage").attr("alt", "The Logo"); 
image = image.css("logoImage"); 

但它更容易做到這一點

$("#myImage").attr("alt", "The Logo").css("logoImage"); 

因爲你切出的中間步驟。

這是值得堅持與鏈接,檢查了Getting Started with jQuery教程。

0

鏈接只是使用一個表達式的結果作爲另一個表達式的輸入。他們可以很容易地扁平化爲單獨的陳述。

如果一個方法返回同一個集合,你可以調用方法,任何其他方法:

var links = $('a.popup'); 
var handler = function(e){ window.open(this.href,this.target); e.preventDefault(); }; 
links.click(handler); 
links.css('color', 'red'); 

如果一個方法返回一個不同的集合,您必須將返回值賦給一個新變量,或者回到同一個變量來替換當前集合:

var links = $('a.popup'); 
links = links.filter('[target=_blank]'); 
links.css('font-weight', 'bold');