2016-04-09 5 views
0

私はいくつかのjsファイルとjqueryを持つhtmlファイルを持っています。Jqueryは部分的にイベントを発生させることなく動作します

ファイル1.jsのスクリプトは正常に動作します。 ファイル2.jsのスクリプトも正常に動作しますが、Jqueryは常に機能しません。 私はいくつかのスクリプトを実行し、結果に ".popup"を隠す必要があります。すべて動作 - 私はコンソールにメッセージを実行するが、hide()やclick()などのイベントは機能しません。

console.log("All done!");//works 
console.log($(".popup"));//works fine – shows the right element in console 

$(".popup").click();//doesn't work 
$(".popup").hide();//doesn't work 

私は1つのファイルにすべてのスクリプトを接続し、常に1つのファイルと何も他で動作しますから、スクリプトで罰金がある理由を理解しようとする必要はありません。

アイデア?

+0

の理由を説明しますその要素をクリックすると、トリガを使用する必要があります。これは$( "。popup")ですtrigger( "click"); –

答えて

1

私たちはあなたのコードの多くを見ることができないので、私の答えは唯一の良い推測です:

理由は、DOMがレンダリングされる前に、あなたのJavaScriptが実行されていることである、したがって、$(...)あなたの要素を選択しようとしています、この瞬間にそれを見つけることはできません。 https://api.jquery.com/ready/

$(document).ready(function() { 
     $(".popup").click(); 
     $(".popup").hide(); 
} 

機能が実行された後、あなたがそれに渡す値が評価されるので、それはあなたのconsole.log声明のために働く:jQueryのは、あなたのDOMの準備ができたら、実行されますready機能を有している理由です

。 (実際に私はこのための本当の理由を知らない、自分自身を研究する必要がある)

編集:Is Chrome's JavaScript console lazy about evaluating arrays?は、あなたがしたい場合は、ハンドラをクリック指定する必要があるかconsole.log()行動(Chromeのみ)

+0

こんにちは!手伝ってくれてありがとう。しかし、私は$(document)の.ready(function(){ - 何も働かないので、単純ではありません:( –

+0

)あなたは基本的なマークアップ(あなたのスクリプトをどうやって入れますか?あなたの問題を見つけるのに役立ちます – lexith

関連する問題