2011-07-11 69 views
1

我有這樣的CSS選擇器,它只是不會綁定.live(),但完美的作品與.bind()jQuery的現場兄弟選擇器不工作

$('.treeView li ~ :has("ul")').prev('li')

我在什麼地方閱讀,使用.prev().next()可能很麻煩,加上.live(),所以我想創建一個純粹的CSS選擇器(或任何與.live()一起工作!)來完成這項工作 - 但我無法弄清楚!

這就是我想做的事: 選擇所有li -elements,隨後是包含ulli

下面是一個HTML標記示例,我想選擇其中評論說「選擇」

<div class="treeView" id="processSegmentsTree"> 
    <ul> 
     <li>Ostetanke</li> //selected 
     <li> 
      <ul> 
       <li>Tank 1</li> 
       <li>Tank 2</li> 
      </ul> 
     </li> 
     <li>Presse</li> //selected 
     <li> 
      <ul> 
       <li>Sub-leaf 1</li> 
       <li>Sub-leaf 2</li> //selected 
       <li> 
        <ul> 
         <li>test</li> 
         <li>test</li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

任何幫助是非常讚賞的,因爲這是一個有點我眼中的刺:(

+1

那麼[在CSS中沒有以前的兄弟選擇](http://stackoverflow.com/questions/1817792/css-previous-sibling-selector),並且jQuery沒有實現它自己的一個... – BoltClock

+0

我很清楚這一點(我清楚地表明瞭這一點:P),我正在尋找一種方法來實現我所需要的,並使其可以在'.live()'事件系統中使用。 –

回答

2

沒有這樣的選擇來完成這個任務

我強烈建議您做的是在選擇所需元素時添加ANYING作爲標誌。 添加屬性,包裝,任何你想要的,然後任務將是它應該是容易的。

+0

是的,你可能是對的。我是在用什麼方法將新分支和葉子添加到treeView之後,而不必擔心重新綁定事件處理程序。但是現在我已經實現了所有重新綁定,我發現你的建議比多行多毛的CSS選擇器更簡單。謝謝您的幫助! :) –

+0

不用擔心,隨時歡迎您。 –

0

這可能工作://不是CSS選擇

$(".treeView li:has('ul')").prev(); 
+0

問題是擺脫'prev()',因爲它不能與'live'一起工作。 –

+0

@Thor Jacobsen嗨,朋友,沒有可以滿足您的目標的CSS選擇器。 jQuery允許我們使用css選擇器,並且它爲我們提供了很多自己的過程來對dss /元素進行查詢,這在css中是不被接受的。 – thecodeparadox

+0

@Thor你有沒有機會動態生成ul-li? – thecodeparadox