全部, 我有一些链接显示,有人可以点击链接,如果一个人喜欢它,然后我基本上将它分配给另一个div与删除链接,以便它可以被删除。这是.post的代码
jQuery.post("save_song.php", { song_id: song_id, love_like_hate: "love" },
function(response) {
if(response.responseText1=="too_many"){
alert(response.responseText2);
}else if(response.responseText1=="already_selected"){
alert(response.responseText2);
}else{
alert(response.responseText2);
jQuery("#div_song_id_"+song_id).html(response.responseText1);
jQuery("#love_it").append(response.responseText2);
jQuery("#current_count_love").html(response.responseText3);
if(response.responseText4=="remove_initial"){
jQuery("#love_none").hide();
}
}
}, "json");
这是发送回页面的save_song.php页面:
echo json_encode(array(
'responseText1' => 'Youve added '.$artist_name.' - '.$track_name.' to your '.$love_like_hate.' list!',
'responseText2' => '<div id="div_added_song_id_'.$song_id.'" style="padding:0 0 0 10px; "><span style="display:inline-block; width:200px;">'.$artist_name.'</span><span style="display:inline-block; width:400px;">'.$track_name.'</span><span style="display:inline-block; width:100px;">'.$track_time.'</span><span style="display:inline-block; width:100px;"><a href="#" class="remove_song" id="delete_'.$song_id.'">Remove</a></span></div>',
'responseText3' => $resultrowschecktotal
));
我的问题是,当response.responseText2附加到我的div时,.remove_song的jquery不起作用,它基本上只使用链接并尝试执行#。这是remove_song的代码:
jQuery(".remove_song").click(function(){
event.preventDefault();
song_id = jQuery(this).attr("id");
song_id = song_id.split("_");
song_id = song_id[1];
var answer = confirm("Do you want to remove this song?")
if (answer){
jQuery.post("delete_song.php", { song_id: song_id },
function(response) {
jQuery("#div_added_song_id_"+song_id).hide();
jQuery("#current_count_"+response.responseText2).html(response.responseText1);
}, "json");
}
});
我怎样才能将这个用于新添加的链接,因为在DOM完成时它们没有被加载?
答案 0 :(得分:1)
jquery .click事件仅适用于您指定的元素,因此,如果您动态引入内容,则需要使用直播事件:http://api.jquery.com/on/ 您可以将其设置为观看更改的“DOM区域”,并自动为其分配点击事件。
我注意到其他人发布了使用.live函数,但是,从jQuery 1.7开始它是一个不推荐使用的函数。
答案 1 :(得分:0)
您需要使用$ .live()或$ .delegate()而不是单击()。
jQuery('#love_it').delegate('.remove_song', 'click', function (){
event.preventDefault();
song_id = jQuery(this).attr("id");
song_id = song_id.split("_");
song_id = song_id[1];
var answer = confirm("Do you want to remove this song?")
if (answer){
jQuery.post("delete_song.php", { song_id: song_id },
function(response) {
jQuery("#div_added_song_id_"+song_id).hide();
jQuery("#current_count_"+response.responseText2).html(response.responseText1);
}, "json");
}
});