1

Below is my ajax code.I have written my question as comments in the code below:

//Make the Ajax Request
$.ajax({
    type: "POST",
    url: "dbtryout2_2.php",
    data: datastr,
    success: function(arrayphp) {
         //the problem is with this album class.
         //Its not getting identified outside ajax code
         var link = $('<a href="#" class="album"><font color="red">' + arrayphp + '</font></a>');
        linkclass = link.attr("class"); 
        $(".searchby .searchlist").append(link);   
    }
});
}); 

  //On clicking element of "linkclass" The code below is not working

    $(".searchby .searchlist '.'+linkclass").on("click", function() {
 alert("iam here");
 });

 //while this code is working when i have included directly a span 
 //element "clickme" inside "searchlist division" and have given class name    "democlass" to it
 //On clicking the democlass element alert function is gettting called

     //i want alert function to be called for above code also
 $(".searchby .searchlist .democlass").on("click", function() {
 alert("iam here");
});

I want the code after ajax code to run

4

2 に答える 2

2

イベント委任を使用する必要があります。ここでは固定クラス名を使用する必要があります

$('.searchby .searchlist').on('click', '.album', function() {
    alert("iam here");
});

クラスalbumが修正されていない場合、別の解決策は、要素が作成された後にイベント ハンドラーをバインドすることです。

$.ajax({
    type: "POST",
    url: "dbtryout2_2.php",
    data: datastr,
    success: function(arrayphp) {
        var link = $('<a href="#" class="album"><font color="red">' + arrayphp + '</font></a>');
        link.click(albumClickHandler)
        $(".searchby .searchlist").append(link);   
    }
});

function albumClickHandler() {
    alert("iam here");
}
于 2013-08-25T12:40:18.533 に答える
0

次のように ajax コールバック内でクリック ハンドラーをバインドする必要があります。

$.ajax({
    type: "POST",
    url: "dbtryout2_2.php",
    data: datastr,
    success: function(arrayphp) {
        //the problem is with this album class.
        //Its not getting identified outside ajax code
        var link = $('<a href="#" class="album"><font color="red">' + arrayphp + '</font></a>');
        linkclass = link.attr("class"); 
        $(".searchby .searchlist").append(link);   

        $(".searchby .searchlist '.'+linkclass").on("click", function() {
            alert("iam here");
        });
    }
});
}); 

このようにして、リンクを DOM に追加した直後にクリック イベントがバインドされます。

于 2013-08-25T12:42:42.580 に答える