2017-07-25 40 views
-1

我正努力讓下面的工作。我可以用2個ID使用:has而不是三個。只有當它有一個disabling_div的孫子時,我才能夠將CSS應用於span_elementJquery。查找身份證的ID

jQuery的

$("[id^=span_element]:has[id^=another_id]:has([id^=DisablingDiv])").css({ "cursor": "not-allowed" }); 

$("[id^=span_element].find([id^=DisablingDiv])").css({ "cursor": "not-allowed" }); 

HTML

<div id="span_element_1"> <!--apply style to this, only when DisablingDiv_1 is below--> 
    <div id="another_id"> 
     <div id="DisablingDiv_1"> 

      Content 

     </div> 
    </div> 
</div> 
+0

爲什麼downvotes?問題是不正確的,他顯示了他已經嘗試過什麼,問題是什麼.... – Martijn

+0

謝謝@Martijn –

回答

1

讀你的編輯和你的一些評論後,我想你搜索這個:

$("[id^=DisablingDiv]").parent().css(); // That's #another_id 
$("[id^=DisablingDiv]").parent().parent().css(); // That's #span_element_1 

那樣你就去了底部> T op並且您不必驗證#span_element或another_div是否包含DisablingDiv。

+0

你也可能想看看'.closest()'而不是父母 – Martijn

1

使用查找和長度

if($('[id^=span_element]').find('[id^=DisablingDiv]').length!==0){ 
    alert("Yes! #span_element_1 contains a #DisablingDiv_1"); 
    // And here your magix, like showing the span. 
} 

這將試圖找到一個#span_element_1,然後它會嘗試找到#DisablingDiv_1作爲它的後代之一。如果它發現多於零的匹配,它就存在。

+0

添加完美:) – Martijn

+0

Ooooo對不起!此評論不適合你!這是爲了這個問題!我的錯! –

+1

哈哈,仍然增加了 – Martijn

1
  1. 使用>直接孩子選擇

$("[id^=span_element] > > [id^=DisablingDiv]").css({ 
 
    "color": "red" 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="span_element_1">not red 
 
    <div id="another_id"> not red 
 
    <div id="DisablingDiv_1"> 
 

 
     red 
 

 
    </div> 
 
    </div> 
 
</div>

+0

我希望span_element只有當disabling_div存在時纔得到樣式 –

+1

優雅,但應該注意的是,如果你移動禁用div,這將停止工作。可能不是問題,但至少值得一提 – Martijn

+1

謝謝你的努力 –

1

$("[id^=span_element]").find("[id^=DisablingDiv]").css({ "cursor": "not-allowed" });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="span_element_1"> <!--apply style to this, only when DisablingDiv_1 is below--> 
 
    <div id="another_id"> 
 
     <div id="DisablingDiv_1"> 
 

 
      Content 
 

 
     </div> 
 
    </div> 
 
</div>

+0

@Tom Rudge你的選擇有誤是檢查這一行$(「 [(id)= span_element]「)。find(」[id^= DisablingDiv]「)。css({」cursor「:」not-allowed「}); – Dhaarani

0
<div class="wrapper"> 
    <div id="span_element_1"> <!--apply style to this, only when DisablingDiv_1 is below--> 
    <div id="another_id"> 
     <div id="DisablingDiv_1" class="active"> 
      Content 
     </div> 
    </div> 
    </div> 
</div> 
if ($("[id^=span_element].parents('.wrapper').find('#another_id').hasClass("active)") { 
    $("[id^=span_element].css(); // Do css if active class present 
} else { 
    $("[id^=span_element].css(); // Do css if active class not present 
}