无法使用addClass方法,也不能通过$(this)在动态加载的元素上保存DOM元素的实例。我已经在使用.on方法对这些元素点击事件,但我无法操纵它们。
$(document).on("click",".PlayPause",function(){
if($(this).attr('src') == 'img/Play.png'){
$(this).attr('src','img/Pause.png');
var songId = $(this).parent().siblings('.Top_Container').children('input').val();
$.post('songs.php',{songId : songId}, function(path){
if(globalSong.playState && !($(this).hasClass('prevSelection'))){
$('.prevSelection').attr('src','img/Play.png');
globalSong.pause();
$('.prevSelection').removeClass('prevSelection');
}
globalSong = soundManager.createSound({
id: ("sound" + songId),
url: (songsPath + path),
volume: userPrefVolume
});
globalSong.play();
$(this).addClass('prevSelection');
});
} else {
$(this).attr('src','img/Play.png');
globalSong.pause();
}
});
答案 0 :(得分:0)
您需要在function()
之后保存$(this)
$(document).on("click",".PlayPause",function(){
var $this = $(this); //////Save this here//////
if($(this).attr('src') == 'img/Play.png'){
$(this).attr('src','img/Pause.png');
var songId = $(this).parent().siblings('.Top_Container').children('input').val();
$.post('songs.php',{songId : songId}, function(path){
//////////Use $this instead of $(this) inside here///////////
if(globalSong.playState && !($(this).hasClass('prevSelection'))){//$this
$('.prevSelection').attr('src','img/Play.png');
globalSong.pause();
$('.prevSelection').removeClass('prevSelection');
}
globalSong = soundManager.createSound({
id: ("sound" + songId),
url: (songsPath + path),
volume: userPrefVolume
});
globalSong.play();
$(this).addClass('prevSelection'); //$this
});
} else {
$(this).attr('src','img/Play.png');
globalSong.pause();
}
});
在$this
函数
$(this)
代替$.post()