1

対象となる要素を選択するために(URLで使用#testして)jQueryを使用していますが、ブラウザに依存する動作をしています。

コード:

### test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="[path_to_]/jquery-1.10.2.min.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id="test">Hello world</div>
<script>
    $(document).ready(function() {
        alert($(":target").html());
        $(":target").fadeOut(1000).fadeIn(1000);
    });
</script>
</body>
</html>

jsFiddleを使用してみましたが、これには URL が必要です (試してみましたが、jsFiddle で動作させることができませんでした)。

さて、ページを開くとtest.html#test……

  • firefox 24.0 では、警告Hello worldとフェードが正しく行われます。
  • Chrome 29.0.1547.76 では、警告が表示され、undefinedフェードしません。

どちらもMac OS Xを使用しています。

私は何を間違っていますか?これは「機能」ですか?

4

1 に答える 1

1

バグのようですが、ハッシュをセレクターとして使用することで回避できます。

  $(document).ready(function () {
    alert($(location.hash).html());
    $(location.hash).fadeOut(1000).fadeIn(1000);
  });

または、要素が存在するまでしばらく待つか、コメントでケビンが言及したようにしばらく時間がかかります。

編集: バグ レポート (重複がいくつかあります) http://bugs.jquery.com/ticket/14135

于 2013-09-23T20:02:44.580 に答える