-
ID:EbwP.9 さんの質問

queryに挑戦しているのですが、この様に書いても反応しないので、どういう風に書けばいいか教えて頂けないでしょうか?よろしくお願いします

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script>
$("p").hover(function(){
$(this).css("color","red");
});
</script>

みんなの回答 7 件

ID:WBos20 さんの回答

このコードだけみると
1)p要素が別のCSSでdisplay: none;になっている
2)$("p").mouserover(function(){});
のどちらかっぽいですね。

ID:EbwP.9

返信が遅れてすみません。ご回答ありがとうございました。

ID:yA2K0o さんの回答

2つめのは
<script>
$(function(){
$("p").hover(function(){
$(this).css("color","red");
});
});
</script>
かなあ。

それから、閲覧に使っているブラウザは、IE9以下じゃないよね?
理由は↓

jQuery 2.0がついに正式リリース。IE8以前はサポートせず、より軽量で高速に - Publickey

http://www.publickey1.jp/blog/13/jquery_20ie8_1.html
ID:EbwP.9

返信が遅れてすみません。丁寧に書いてくださりありがとうございました。おかげで様で、うまくいきました。

ID:LutMwo さんの回答

的外れだったら大変申し訳ないのだけど、
jQuery(function($){ と }); とで
コード全体を囲ってみたらどうだろう。

ID:eX.TIm

半分どころかこれが正解。

ID:EbwP.9

返信が遅れてすみません。教えてくださりありがとうございました。

ID:Hkj9Qr さんの回答

↑が半分正解。
scriptタグをheadの直前に書いた場合は、ドキュメントの描画を待ってからイベントリスナーをしないと反応しない。
ただしセレクタに指定したものは、既に描画されていれば、onでイベントを登録した時の第二引数で指定すればイベントは動く。

具体的には3つの解決法がある。
①scriptタグをbody閉じタグの直前に持ってくる
→これは根本的な解決法ではないが、それでも動くようになるかも。ただし最近はscriptタグはbodyの直前に持ってくることでブラウザ表示を優先させられるので、プログラムに関係なくともこれをしたほうがいい。
ただしグローバル変数や先に読み込ませたいjsファイル等がある場合はこれに限らない。

②セレクタをdocumentにする
→$(document).on(’mouseover’, ’p’, function (event) {
$(this).css("color","red");
});
ただしこれも根本的な解決法ではない。しかしセレクタ要素を既に描画されているものに限定して、onの第二引数で指定することで、後から動的に描画されたものに対してもイベントを拾える。(少し前のliveと同じ)

③documentの描画を待つ
→$(document).ready(function() {
// この中にプログラムを普通に書く
});

ただし慣習的にdocument.readyではなくて
$(function() {
// この中にプログラムを普通に書く
});
と書くのが一般的。

ID:Hkj9Qr

最近はscriptタグはbodyの直前に持ってくる

最近はscriptタグは</body>の直前に持ってくる

あと国語力がうんこちゃんすぎて色々日本語おかしい

ID:EbwP.9

返信が遅れて、すみませんでした。詳しいご説明ありがとうございました。

ID:JNeoBI さんの回答

みんなやさすぃ!

ID:W5/p3H さんの回答

queryっていうとデータベース関連の質問に見える。

ID:sAbx9W さんの回答

っていうか、2.0でもhoverが使えることを今知った。
onで、mouseoverとmouseenterを切り分けたほうがいろいろ幸せだよ。

ID:EbwP.9

そうなんですね、教えてくださりありごとうございました。

最終更新日:2013-11-13 (2,441 views)

関連するトピックス

ページ上部に戻る