2017-07-02 6 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()は必要ありません。それはちょうどに長い時間前に簡素化されています:彼らは冗長だ以来のjQueryの新しいバージョンで

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

は、click()のようなショートカットイベントメソッドは、推奨されなくなりました。最新バージョンでは完全に削除されています。

代わりに、すべてのイベントリスナーの設定に.on()を使用する必要があります。

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

UPDATE:あなたは.hide()メソッドから同じTypeError Sを抱えているコメントで言及しました。これはjQuery 3でも削除されたのは、人々のスタイルシートでうまく動作しなかったためです。代わりに、addClass(),removeClass()およびtoggleClass()を使用して、独自の表示/非表示クラスを要素に追加できます。あなたは、あなたのスタイルシートでそれらのクラスをスタイルして、表示と隠蔽の仕方を完全に制御できるようにします。

さらに、jQuery 3.0 Upgrade Guideを読んでください。すべての問題はjQuery 3にはもうない古い方法に基づいているためです。

+0

にイベントをトリガするために、動的に作成された要素の前documentまたは他のparentセレクタを使う - 今私がキャッチされない例外TypeError取得しています。$(... ).hideは関数ではありませんか? –

+0

jQuery 3アップグレードガイドを含むように答えを更新しました。 '.hide()'と '.show()'メソッドも3.0+ https://jquery.com/upgrade-guide/3.0/#effectsで取り除かれました – Soviut

+0

代わりに '.addClass()'を使うべきですあなたはいつもうまくいくことがわかっている自分のhide/showスタイルを適用することができます。 – Soviut

1

は、これが最初のハードルを越えて私を得たこと

$(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

OK - エラーはなくなりましたが、divはまだ残っています...私はどんなdivをクリックしているのかよくわからないので、クリックイベントの間違ったdivをターゲットにしていると思いますか?とにかく私が見つけ出すことはできますか? –

関連する問題