2010-02-04 58 views
2

如果我這樣做的jQuery上下文選擇

var domElement = $("#id"); 

和返回的元素是div標籤,

我怎麼能那麼做這樣的事情

domElement.$('div a:nth-child(3)').after(somehtml); 

這是一個例子,我想要在該「domElement」div下的第三個鏈接之後添加一些HTML。

以上似乎並不奏效。我有很多例子,我已經從整個頁面HTML中選擇了某個元素,然後我想在該元素的「上下文」中工作。

在90%的情況下,我希望繼續jQuery的選擇,從以前從頁面中選擇DOM元素的操作和操作,而不是像整個頁面那樣操作$(..)。

回答

6

你想.find()http://api.jquery.com/find/

var domElement = $("#id"); 
domElement.find('div a:nth-child(3)').after(somehtml); 

如果您打算對domElement與多個子選擇此鏈接,結束每個使用.find().end()

$("#id") 
    .find('div') 
    .click(function() { alert("#id div"); }) 
    .find('a.my-class1') 
     .click(function() { alert("#id div a.clickable"); }) 
     .end() // stop working with 'a.my-class1' 
    .find('a.my-class2') 
     .click(function() { alert("#id div a.my-class2"); }) 
     .end() // stop working with 'a.my-class2' 
    .end() // stop working with 'div' 
    .click(function() { alert("#id"); }); 

從概念上講,你降深入與.find的DOM() ,並用.end()向上提升DOM。從技術上講「降」與「升」是不正確的,因爲你也可以先起來再回來像.parent().closest(),兩者都可以與.end()終止功能,以恢復到原來選擇向下穿越:

$("#id") 
    .parent() 
    .click(function() { alert("I'm #id's parent!"); }) 
    .end() 
    .click(function() { alert ("back to #id"); }); 
+0

這可以使用一些鏈接到文檔 – rfunduk 2010-02-05 12:26:03

1

試試這個:

$('div a:nth-child(3)', domElement).after(somehtml); 
+0

雖然有效,但我認爲這種上下文風格的選擇器已被棄用。 (我不記得我在哪裏看到它,但我認爲jQuery的人更喜歡「.find()」函數。) – Pointy 2010-02-04 16:08:05

+0

我不知道這一點,謝謝你的信息。 – egyedg 2010-02-05 14:47:13

+0

上下文參數尚未被棄用。當然,我個人偏好或代碼清晰度可能更適合使用find(我自己也這麼覺得)。 http://api.jquery.com/jQuery/#jQuery1 – rfunduk 2010-02-05 20:28:15

4

兩個選項,使用上下文參數爲jQuery function

$('div a:nth-child(3)', domElement).after(something); 

或(我的偏好)使用find

domElement.find('div a:nth-child(3)').after(something); 
+0

我認爲OP想要在'domElement'內找到第三個鏈接,所以選擇器不需要以''div''開頭 – bdukes 2010-02-04 16:14:58

+0

@bdukes:我不想我不這麼認爲,他最初的嘗試是'獨裁'('div a:n-child(3)')'。 – rfunduk 2010-02-05 12:27:01

+0

他說:「我想在'domElement'div下的第三個鏈接之後添加一些HTML。「我認爲他認爲他必須再次選擇」domElement「 – bdukes 2010-02-05 13:09:31

1

嘗試

$('div a:nth-child(3)',domElement).after(somehtml); 

上下文是第二個參數。

祝你好運。

+0

我不知道爲什麼我回答新的未答覆的問題...我總是提交併發現一堆其他人發佈了相同的東西。:-) – cjstehno 2010-02-04 16:04:10