1

動的な画像ギャラリーを作成しようとしています。また、作成された各画像には、ユーザーがクリックできるように上部に div があります。クリックイベントをdivにバインドできません

コード

$(document).ready(function()
{
    if()
    {

    }
    else
    {
        var divImgContainer =  '<div id="imgContainer">';
        var divInfo         = '<div id="info">';
        var divDetails      = '<div id="details">';
        var divImage        = '<div id="image">';
        var divVote         = '<div id ="click">';
        for(i=0; i<$ImageArray.length; i++)
        {
             document.getElementById("container").innerHTML += divImgContainer+divInfo+divDetails+'Caption</div>'+divVote+'</div></div>'+divImage+'<a href="img/'+$ImageArray[i].link +'"><img src="'+$ImageArray[i].thumb+'" /></a></div></div>';
         }
        $('#click').click(function()
        {
            alert("click");
        });
    }
});

グーグルは、2つの一般的な回答を提供しました.1つは機能$('#click').click(function() し、もう1つは$('#click').live(click,function() 機能しません.

動的に生成された div のクリック イベントをバインドする特定の方法はありますか?

4

3 に答える 3

2

まず、同じ ID で複数の div を作成しないでください。

要素 ID 'click' にクラス 'vote' があり、クラス 'vote' の任意の div をクリックすると仮定して、これを試してください:

$('#container').on('click', '.vote', function(e){
    alert("click");
});
于 2013-02-01T12:26:54.847 に答える
0

置く

$('#click').click(function(){
     alert("click");
});

の外側

$(document).ready(function(){   });

うまくいかない場合は、試してみてください

$('#click').live(click,function()

それはあなたを助けるかもしれません

于 2013-02-01T12:15:19.597 に答える
0

まず、この.live()メソッドは jQuery 1.7 で廃止され、jQuery 1.9 で削除されました。使用しないでください。

JavaScript を使用して要素を作成していますが、ページの読み込み時、およびイベント ハンドラーをバインド (試行) する前に行っているため、問題にはなりません。

ただし、問題は、これを行っている可能性があります。

... + divVote+'</div>...

これにより要素が開かれ、<div id="click">すぐに終了するため、コンテンツがないように見えます。コンテンツがない場合、実際にクリックするのは難しくなります。

于 2013-02-01T12:14:17.290 に答える