1

jquery関数を使用したクリックイベントは、タグの前では機能しませんが、タグの後では正常に機能します。また、私が使用する場合document.ready、それは動作します。タグの前にあるのになぜ動かないのか知りたいのですが。

<head>
    <script type="text/javascript">
        function jchand(){
            $('a').click(function(){
                alert('a')
            })
        }
        jchand();
    </script>
</head>
<body>
    <a href="#" >click me</a>
</body>
4

5 に答える 5

3

.clickページの読み込みがまだ完了していないため、バインドしようとしたときに要素が存在しません。

別のこと私がdocument.readyを使用している場合、それは機能しています

まあ、これはまさにそのための$(document).readyものです:

$(document).ready(function()
{
    $('a').click(function()
    {
        alert('a');
    });
});

または、 .on()を使用することもできます。

$(document).on('click', 'a', function()
{
    alert('a');
});

これは代わりにドキュメント全体にバインドされるため、将来追加されるすべての要素に対して機能します。

于 2013-01-05T16:07:25.597 に答える
2

$('a')要素を探します<a>が、DOMの準備ができていません。$(document).ready()DOMが実際に準備ができたときにトリガーされるコールバック関数を作成するために使用します。

$(document).ready(function() {
    $('a').click(function(){
        alert('a');
    })
})
于 2013-01-05T16:07:12.567 に答える
1

最も可能性の高い問題は、<a>要素が存在する前にjchand()が実行されていることです。これを試して:

<script type="text/javascript">
$(function(){
$('a').click(function(){
alert('a')
})
});
</script>
于 2013-01-05T16:10:16.197 に答える
0

スクリプトは、がDOMにロードされる前に呼び出されるためです。その時点では、クリック要素をアタッチするための「a」要素は表示されません。関数宣言は問題ありませんが、「a」の後に呼び出す必要があります。

document.ready関数は、ページのすべての要素がロードされた後にスクリプトを呼び出すため、スクリプトが起動されます。

于 2013-01-05T16:06:52.967 に答える
0

スクリプトは、DOMの準備が整う前に実行されます。$(document).ready(function())次のようにドキュメントレディ(または$(function()))で関数を呼び出すと機能します。

<head>
<script type="text/javascript">
    function jchand(){
        $('a').click(function(){
            alert('a')
        })
    }

    $(function() {
        jchand();
    })
</script>
</head>
<body>
<a href="#" >click me</a>
</body>
于 2013-01-05T16:07:16.423 に答える