You need to save $(this)
after function()
$(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();
}
});
Use $this
instead of $(this)
inside the $.post()
function
solved jQuery methods on dynamic elements