2010-06-14 50 views
0

我永諾找到了答案這裏只是被讀取線程,但現在是時候爲我的第一個線程,因爲我無法找到相關的問題: 這是我的目標代碼:if語句來檢查可用的元素

<li> 
       <span class="panel"> 
        <a href="…" class="image" rel="group"> 
         <img title="…" src="…" alt="…" width="128" height="96" /> 
        </a> 
        <span class="sizes"> 
         <span class="button"> 
          <a href="#" class="size1" rel="…" title="1">9x13</a> 
         </span> 
         <span class="button"> 
          <a href="#" class="size2" rel="…" title="3">10x15</a> 
         </span> 
         <span class="button"> 
          <a href="#" class="size3" rel="…" title="6">20x30</a> 
         </span> 
        </span> 
       </span> 
       <a href="…" class="image" rel="group"> 
        <span class="added"></span> 
        <img title="…" src="…" alt="…" width="128" height="96" class="thumbnail" /> 
       </a> 
</li> 

我通過jquery的添加兩個「跨度」元素:

$('.sizes a').click( 
     function (e) { 
      e.preventDefault(); 
      $(this).after("<span class='checked'></span><span class='remove'></span>"); 
     } 
); 

那些S的最大量是在一個纏繞DIV 3次。所以我想要做的是以下幾點:

$(".remove").live('click', function(){ 
      $(this).hide(); 
      $(this).prev().hide(); // hide checked span 
      if ($(this).parent().parent().children().children().each().hasClass('checked')) 
      { 
       $(this).parent().parent().parent().next().children(".added").hide(); 
      } 
     } 
    ); 

當然我的if語句是廢話。我用我自己的話來嘗試: 如果跨度(class = panel)中有多個跨度(class = remove),則 什麼都不應該發生。 但是如果只有一個跨度(class = remove)跨度(類=面板),那麼應該隱藏

我該如何做到這一點?有一個這樣的在線演示:http://bit.ly/972be4正如你所看到的,每當我點擊一個圖像下面的按鈕時,圖像就會被標籤標記。並且我想在沒有選擇按鈕時隱藏這個標籤(class = added)

非常感謝!來自德國

最良好的祝願

回答

0

檢查

$("span.panel").find("span.remove").length 

或只是

$("span.panel span.remove").length 
0

你可以重寫的最後一位爲以下內容:

$('.remove').live('click'), function() { 
    if($(this).parents('.panel').find('.remove').length > 1) 
     return; 
    // there's only 1 - add the rest of the functionality here 
} 

雖然。家長()和.find()很貴,但如果你沒有很多這些元素,那麼開銷就是我可以忽略不計。

此外,如果「刪除」元素始終兄弟姐妹,改變第二行:

if($(this).siblings('.remove').length) 
+0

沒有問題,但你會有一個共享關於jQuery選擇器的擴展性的資源嗎? – 2010-06-14 08:25:32

+0

不確定擴展性是什麼意思,但你總是可以使用jQuery文檔頁面作爲參考:http://api.jquery.com/category/selectors/ – mway 2010-06-14 08:29:47

0

上述答案是正確的。但是,正如我所看到的,您並沒有從DOM中刪除這些'span.remove',因此一旦添加它們就會計入所有的情況。所以你必須檢查他們的知名度。

if($(this).parent().parent().children().find('.remove:visible').length == 0){ 
    $(this).parent().parent().parent().next().children(".added").hide(); 
} 

將是您的條件。當最後'.remove'被點擊隱藏時,這將隱藏黃色條。

正如您剛纔所問,如何隱藏該欄,這只是做到了這一點。可以有其他的事情,你必須考慮,這可能是有缺陷的,如「重新顯示.added欄,以防再次選擇」,邏輯似乎也被破壞。

祝你好運。

+0

哇,你們救了我一天。兩個主要想法幫助了我很多: 1. find('。刪除:可見')和 2. .length == 0 這是如此驚人的容易,但我絕對沒有線索。非常感謝你:-) – 2010-06-14 12:15:43

+0

很高興知道。但是在StackOverflow中,我們通過接受他們的答案來感謝人們。 – simplyharsh 2010-06-18 15:22:12