2017-07-02 38 views
3

不知道在哪裏,我要去究竟錯在這裏 - 我試圖簡單地隱藏了一定的div被點擊一個又一個的時候。這裏是我的jQuery(放置在.html文件的最底部):

<script> 
    $(document).ready(function() { 
     $(".card__container--closed").click(function() { 
      $(".hide__overlay").hide(); 
     }); 
    }); 
</script> 

<div class="hide__overlay"> 
    <p class="card__subtitle overlay card-overlay">NEWS</p> 
</div> 
<div id="card" class="card"> 
    ...some SVG image thing here... 
</div> 

但是,由於某種原因,我收到以下錯誤:

Uncaught TypeError: $(...).click is not a function 
    at HTMLDocument.<anonymous> 

我使用jQuery 3.2.1 ..

回答

4

所有的問題都是由於你使用jQuery 3以及自jQuery 2以來已經刪除了很多東西。請記住,主要版本號意味着它們可以包含重大更改。有關jQuery 3.0以上版本的更多信息,請閱讀jQuery 3.0 Upgrade Guide

首先,你不需要$(document).ready()。這是被簡化很久以前只是:

$(function() { 
    // your code 
}); 

在jQuery中的較新版本,快捷事件的方法,如click(),已經廢棄了,因爲他們是多餘的。在最新版本中,它們已被完全刪除。

相反,你需要使用.on()設置的所有事件監聽器。

$(".card__container--closed").on('click', function() { 
    // ... 
}); 

UPDATE:你已經在你從.hide()方法具有相同TypeError S上的評論中提到。這是因爲它在jQuery 3中被刪除了,因爲它經常不能很好地與人們的樣式表一起玩。相反,你可以使用addClass()removeClass()toggleClass()到您自己的顯示/隱藏類添加到元素。然後,您可以在樣式表中設置這些類的樣式,以便完全控制如何實現顯示和隱藏。

請再次因爲你所有的問題都是基於jQuery的3沒有了過時的方法讀取jQuery 3.0 Upgrade Guide

+0

事件這已經讓我過了第一關 - 現在我就在遺漏的類型錯誤:$(... )。隱藏不是一個函數? –

+0

我已經更新了我的答案,包括jQuery 3升級指南。 '.hide()'和'.show()'方法在3.0+中也被刪除了https://jquery.com/upgrade-guide/3.0/#effects – Soviut

+0

相反,你應該使用'.addClass()'你可以應用你自己的隱藏/表演風格,你知道將永遠工作。 – Soviut

1

使用document或其他parent選擇動態創建的元素之前觸發對

$(document).ready(function() { 
    $(document).on('click',".card__container--closed",function() { 
    $(document).find(".hide__overlay").css('display','none'); 
    }); 
}); 
+0

這讓我越過了第一個障礙 - 現在我得到了'Uncaught TypeError:$(...)。hide不是函數'??? –

+0

如果'hide'確實存在,那麼這個特定的TypeError將不可能。 – Xufox

+0

好的 - 錯誤消失了,但div仍然存在...我不確定我點擊的具體div是什麼,但我認爲我的單擊事件的目標是錯誤的div?無論如何我能找到答案? –

相關問題