jquery选择器限定范围

睡睡觉困了 2015-09-25 11:12:00
要做一个仿微信的聊天界面,我的想法是每一条消息做一个类,然后给这个类里面的div加一个方法,播放这条消息里的语音。
大概代码如下:

LeftChat = function(userID,contentType,content){
this.content = content;
this.init();
};

LeftChat.prototype = {
init:function(){
this.contentDiv = '<div class="leftText voiceDiv"><audio src="' +
this.content+'"></audio></div>';
this.chat = ('<li id="chatTest">' +
'<div class="leftChat">' +
'<div class="leftImg imgPart"><img src="common/img/icon.jpg"></div>' +
this.contentDiv +
'<div class="clear"></div>' +
'</div>' +
'</li>');

},
show:function(){
$('#chatList').find('ul').append(this.chat);
console.log($('.voiceDiv',this.chat));
$($('.voiceDiv',this.chat)).unbind().on('click',function(){
this.playVoice();
}.bind(this));
},
playVoice:function(){
console.log($(this.chat).find('audio'));
//$(this.contentDiv).find('audio')[0].play();
}
};


调用代码大概如下:

new LeftChat('id','voice','common/mp3/5652.mp3').show();
new RightChat('efg','456').show();
new LeftChat('id','voice','common/mp3/testVoice.mp3').show();


可是现在
$('.voiceDiv',this.chat);

执行结果如下

onclick事件添加不上去。
我猜测是context为空的原因。
纯新手,不是很理解,各位大神麻烦帮忙看下~谢谢各位大神~!
...全文
290 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41037817 2017-11-13
  • 打赏
  • 举报
回复
你好,请教下,这边为什么用 $($('.voiceDiv',this.chat)), 而不是直接 $('.voiceDiv',this.chat)? 初学小白,请指教
睡睡觉困了 2015-10-09
  • 打赏
  • 举报
回复
引用 4 楼 xiaofanku 的回复:
我看到的是string,
发现问题了,this.chat 是string,所以不好用 。 十分感谢!
街头小贩 2015-09-25
  • 打赏
  • 举报
回复

        $($('.voiceDiv',this.chat)).unbind().on('click',function(){
            this.playVoice();
        }.bind(this));
试试live或者在父元素上delegate.或者在添加div时bind('click')
街头小贩 2015-09-25
  • 打赏
  • 举报
回复
我看到的是string,
街头小贩 2015-09-25
  • 打赏
  • 举报
回复
哪你解析一下:
$('.voiceDiv',this.chat)
是什么意思。在你运行时this.chat指的是字符串还是dom element,还是jquery对象
睡睡觉困了 2015-09-25
  • 打赏
  • 举报
回复
引用 1 楼 xiaofanku 的回复:

        $($('.voiceDiv',this.chat)).unbind().on('click',function(){
            this.playVoice();
        }.bind(this));
试试live或者在父元素上delegate.或者在添加div时bind('click')
现在的问题应该是取不到要添加事件的div, live方法和delegate都试了不好用。 $('.voiceDiv',this.chat); 不懂为什么这样取出来的就不行,难道只能用ID的方法了?

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧