关于动态元素的jQuery方法

时间:2014-06-10 10:50:33

标签: jquery this addclass dynamically-generated

无法使用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();
            }
        });

1 个答案:

答案 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()