2013-03-18 72 views
4
#dock > li ul 
     { 
      position: absolute; 
      bottom: 0px; 
      left: -180px; 
      z-index: 1; 
      width: 180px; 
      display: none; 
      background-color: #F1F1F1; 
      border: solid 1px #969696; 
      padding: 0px; 
      margin: 0px; 
      list-style: none; 
     } 

這是我的css類,我想使用jquery動態地應用右邊距。任何想法讚賞。我嘗試這樣做:動態使用jquery應用右邊距

$('#dock').children('li').children('ul').css({ 'margin-right': rmargin });

,但它似乎不工作。

+0

發佈您的HTML。另外,你的'rmargin'是什麼,你在哪裏定義它? – 2013-03-18 09:33:31

+0

您通常可以在jQuery中使用與CSS中相同的選擇器'$('#dock> li ul')。css('margin-right',rmargin);'應該可以工作,假設'rmargin'是一個有效的值分配。 – Nope 2013-03-18 09:48:18

回答

4

嘗試

$('#dock').find('ul').css({ 'margin-right': rmargin }); 

ul必須是child#dockgrand child其他明智它可能無法工作

在這種情況下,你可以使用

$('#dock > li ul').css({ 'margin-right': rmargin }); 

文檔http://api.jquery.com/find

+1

使用與他在CSS中發佈的選擇器相同的選擇器會更合乎邏輯嗎? (雖然結果沒有區別) – 2013-03-18 09:35:45

+0

@BramVanroy:結果可能不一定相同。通過使用'$('#dock'),CSS選擇器是'#dock> li ul'。find('ul')'你不是在尋找和你現在一樣的東西,現在也可以找到所有'ul'在'#dock'元素的直接子節點'li'內部不是**。使用'$('#dock> li ul').css({'margin-right':rmargin})'應該可以工作,並且確保只有相同的元素才能被CSS定位。 – Nope 2013-03-18 09:39:12

+0

@FrançoisWahl這就是我的意思。 *雖然*結果沒有區別,我的意思是使用find(「ul」)'也**目標'#dock> li ul'。換句話說,'find'方法是一組特定的CSS是一個對象。 – 2013-03-18 10:27:10

0

使用它作爲下面,

$('#dock > li ul').css({ 'margin-right': rmargin }); 

$('#dock > li ul')這將選擇所有UL內的LI標籤,它是直接子#dock DOM的

+0

'$('#dock li ul')'與'#dock> li ul'不一樣。你的選擇器也會匹配任何不是**直接孩子的'li's。可能導致不正確的元素成爲攻擊目標。 – Nope 2013-03-18 09:42:25

+0

@FrançoisWahl是的,它會選擇#碼頭的孩子的所有李..我已經更新它 – 2013-03-18 09:43:56

+0

我沒有說它不會選擇他們我說你**還**最終選擇不需要的'李'哪不是直接的孩子。 – Nope 2013-03-18 09:45:56

1
$('#dock > li ul').css({ 'margin-right': rmargin }); 
+0

一個問題:*爲什麼*?你不需要另一個班級。 – 2013-03-18 10:26:32

+0

@BramVanroy我已經刪除了另一個班級代碼..它不會工作。感謝您的指定。 – oscprofessionals 2013-03-18 11:15:42