2

forループを実行しているdivがあります。フィールドの行数に基づいて以下のdivを作成しています。

<div class="parent">
                <p style=" font-family: Times New Roman;color:#a0a0a0; ">
                        Content 1 goes here.........
                </p>
                <div class="child">
                        <span> <a class="likebtn">Like</a> </span>1 people like this     
                </div>
            <hr/>
 </div> 

上記の div は for-each ループにあります。つまり、このように同じ複数の div を異なるコンテンツで作成します。

ユーザーがdivにある同様のボタンをクリックすると、jquery関数を呼び出そうとしています。以下の関数を試しましたが、関数が呼び出されません。なぜこの問題に関して私を助けてください。

<script type="text/javascript">         
        $('.parent .child .likebtn').click(function(e)
        { 
            alert("function called");
        });
</script>

そして、div は動的に作成されます。for-each ループの直後に上記の JavaScript コードを記述すると、関数が呼び出されます。Controller に JavaScript 関数を記述することはお勧めできません。COdeigniter フレームワークを使用しています。助けてください、この関数を head または body で指定する必要があります

4

2 に答える 2

5

divが動的に作成されている場合は、次のように呼び出します

$(document).on('click', '.parent .child .likebtn', function(e)
    { 
        alert("function called");
    });
于 2013-05-10T14:48:22.740 に答える
1

次のように、DOM が完全にロードされた後に関数が実行されるように、関数をエンクロージャーでラップします。

$(function() {
    $('.parent .child .likebtn').click(function(e) { 
        alert("function called");
    });
});

編集: このコンテンツを AJAX から読み込んでいますか? この場合、.on() 関数を使用して、新しい dom 要素がイベントを取得するようにする必要があります。構文は次のようになります。 $(document).on(events, selector, data, handler); -> api.jquery.com/on

EDIT 2: tymeJV と同じ答え

于 2013-05-10T14:46:43.440 に答える