2012-07-18 82 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函数。希望这可以帮助。