2012-07-18 76 views
2

所以你有一堆的元素,你選擇與jQuery只是其中之一。jQuery檢索最接近唯一的選擇器

($('div > ul > li').length === 1) // this is true 

現在,如果你需要把這個元素作爲一個字符串傳遞你通常會:

var el = $('div > ul > lu'); 
var passid = el.prop('id'); 

// in case this element doesn't have an id="..." attribute set one 
if(typeof(passid)!=='string'){ 
    // compute an id="..." attribute based on the time 
    var elindex = new Date().getTime(); 
    // make sure the id we're using isn't already in use by a different element 
    while($('#el_'+elindex).length) 
     elindex++; 

    // assign what we've got 
    passid = 'el_'+ elindex ; 
    el.prop('id', passid); 
}; 
passid = '#'+passid; 

// Once we're good to go, pass the resulting selector 
// passon(passid);... etc. 

是否jQuery的拿出一個更好的(內置)功能(甚至插件真的),以方便我傳遞一個DOM節點的引用作爲字符串?

+0

我不知道我會不會「那樣做」。 – Petah 2012-07-18 00:55:31

+2

爲什麼要將一個DOM元素的引用作爲字符串傳遞?只需傳遞元素本身的引用即可。 – nnnnnn 2012-07-18 00:59:59

+0

@nnnnnn這是一個狀態更新指示器元素,我將它發送到WebSocketServer。真的不能把它作爲參考。 – 2012-07-18 02:08:05

回答

0

假設你只是一次只進行一次狀態更新,爲什麼不能簡單地給該元素一個臨時的id,像「current_el」,然後當websocket返回時,你可以簡單地訪問該元素id「current_el」每次?所以基本上,你設置一個臨時的ID,每次都是一樣的。這樣,您甚至不必發送選擇器,只需訪問臨時標識並在服務器請求返回時將其清除即可。

但是,如果您需要爲將來使用該元素保留一個參考,那麼您的方法似乎就好了。我不知道任何意圖實現這一點的jQuery函數。希望這可以幫助。