2013-01-05 31 views
2

我有以下幾點:jQuery的緩存變量

$(function(){ 
    $table = $('#print_types table'); 
}); 

是否有可能做這樣的事情:

$(function(){ 
    $($table + ' tr:last > td:first').after('something'); 
}); 

由於我緩存表元素,我該怎麼操作表像我上面顯示?通常我會這樣寫:

$(function(){ 
    $('div#print_types table tr:last > td:first').after('something'); 
}); 

問題是我有一堆這些語句,是我爲什麼緩存表的原因。 我試着做我做過的事,但是我得到一個錯誤。我在這裏錯過了什麼嗎?

回答

2

只需使用.find

$table.find('tr:last > td:first') 

這基本上是相等的。您不能使用$($table +...,因爲$table的toString不是您想要的選擇器。

+0

你是對的,我沒有想過使用'.find()'。但它現在起作用了。 我在編寫'$($ table + ...' 感謝! – Dimitri

0

$table是一個jQuery對象。一個jQuery選擇器是一個字符串,你不能連接一個字符串和一個對象。

使用find()代替

$table.find(' tr:last > td:first').after('something'); 
0

你所尋找的是context

$table = $('#print_types table'); 

$('tr:last > td:first', $table).after('something'); 

這是基本相同

$table.find('tr:last > td:first').after('something'); 

.find()

+0

親自'find()'更容易讀取IMO ...內部jQuery在上下文提供時使用'find()'所以沒有任何性能優勢 – charlietfl

+0

@charlietfl我同意,我只是爲OP選擇了選項 – Kyle

+1

@charlietfl上下文在你沒有jQuery對象的時候很有用,例如'$('selector',this )''''(this).find('selector')' –