1

jqueryでjavascriptが追加されたクラスを呼び出すことができません。まったく反応しません。

私はこれでhtmlを追加します:

$(function () {
var $scntDiv = $('#parts');
var i = $('#parts input').size();

$('#addField').on('click', function () {
    var part = '<div id="parts' + i + '"><hr /><input type="text" id="auto_part' + i + '" class="auto_part" name="auto_part' + i + '" placeholder="Dio" /><br/>' +
        '<textarea type="text" id="auto_description' + i + '" class="auto_description" name="auto_description' + i + '" placeholder="Vise informacija"></textarea> <br />' +
        '<a href="#" class="addPhoto' + i + '" style="display:block;">Add Photo</a><input type="file" name="auto_image" class="auto_image' + i + '" style="display:none;" /><a href="#" class="removefield">Izbrisi dio</a></div>';
    $scntDiv.after(part);
    $("#row_count").val(i);
    i++;
    return false;
});

$(document).on("click", ".removefield", function () {
    if (i > 2) {
        $("#row_count").val(i);
        $(this).parent('div').remove();
        i--;
    }
    return false;
});

});

したがって、addPhoto2、addPhoto3などを作成します。しかし、私がこれを使用するとき:

$(function () {
    $(".addPhoto2").click(function(){
       console.log("Hello");
    });
});

addPhoto2では何もしません。デフォルトでロードされているaddPhoto自体を呼び出すことができますが。

4

1 に答える 1

1

要素を接続しようとしたときに要素がDOMに存在しない場合、単純なイベントは機能しないため、作成時にイベントを要素にアタッチする必要があります。これには、イベント委任を使用できます。ただし、すでに適切なフックがあります。

あなたがしたいことは、要素がここに配置された後にこのイベントを添付することです:

$scntDiv.after(part);
$('.addPhoto' + i).click(function(){
    alert("!"); 
 });

これが実際のデモです:http://jsfiddle.net/eQbEt/

于 2013-03-10T22:35:35.810 に答える