首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在变量中传递的js函数堆栈,.hide()不能工作

在变量中传递的js函数堆栈,.hide()不能工作
EN

Stack Overflow用户
提问于 2016-05-10 12:08:50
回答 2查看 235关注 0票数 0

我有一个功能,当我点击视频缩略图时播放视频。我试图显示/隐藏通过php动态生成的视频描述,但它似乎不起作用。

安装: wordpres与jwplayer7。

这是调用js函数的html。

代码语言:javascript
复制
<div class="s_l_whole_item" title="sample.mp4" onclick="playVOD(this.id)" id="sample.mp4"> video image here </div>

所有的javascript都在外部文件中,这是播放视频的函数,应该显示/hide(尚未实现,但甚至隐藏不起作用)为每个视频动态创建的div

代码语言:javascript
复制
function playVOD(filename) {
    jwplayer('MediaPlayerOverview_LS_dvr')
            .setup(
                    {
                        sources : [
                                {
                                    file : "rtmp://xx.xxx.xxx.xxx:1935/vod/mp4:"+ filename
                                },
                                {
                                    file : "http://xx.xxx.xxx.xxx:1935/vod/mp4:"
                                            + filename + "/playlist.m3u8"
                                } ],
                        rtmp : {
                            bufferlength : 3,
                        },
                        logo : {
                            file : 'http://www.somepicture.nu/a.jpg',
                            link : 'http://www.link.nu/'
                        },
                        abouttext : "right click text",
                        aboutlink : "http://www.right click link.com",
                        autostart : true,
                        title : 'title',
                        width : '100%',
                        height : "100%",
                        aspectratio : '16:9',
                        skin : 'glow',
                        fallback : true,
                        androidhls : true,

                    })

        jQuery(document).ready(function() {

            jQuery('.s_l_whole_item').live('click', function(event) {
                //jQuery(this).closest('.hiden_karuselis').find('#ka_'+filename).toggle();

                jQuery(this).closest('.hiden_karuselis').find('#ka_'+filename).hide();

                 console.log("I have been clicked!");
                 console.log('#ka_'+filename);

            });
        });

}

视频回放在每次不同的点击上都能工作,它播放我点击的视频,但由于某种原因它没有显示/隐藏div。

这是我试图隐藏/显示的div,具体取决于单击了什么视频。为了演示的目的,让我们说它只是"sample.mp4“

代码语言:javascript
复制
<div class="hiden_karuselis">
 <div class="ka_file" id="ka_sample.mp4">
  <div class="ka_file_name">sample</div>
  <div class="ka_file_description">description of file</div>
  <div class="ka_file_date">2016-04-19 10:19:33</div>
 </div>
</div>

尝试失败后,我注意到chrome控制台输出变量,就好像函数将追加到它之前的所有调用一样。这就是我在控制台上看到的,当我点击3次不同的视频时。

代码语言:javascript
复制
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_sample.mp4
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_sample.mp4
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_myStream.mp4
VM9740:13 Unhandled event from "MediaPlayerOverview_LS_dvr_swf_0": state %7B%22newstate%22%3A%22idle%22%2C%22oldstate%22%3A%22playing%22%2C%22type%22%3A%22state%22%7D
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_sample.mp4
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_myStream.mp4
vod_player.js?ver=4.4.3:77 I have been clicked!
vod_player.js?ver=4.4.3:78 #ka_rtgwait.mp4
VM9823:13 Unhandled event from "MediaPlayerOverview_LS_dvr_swf_1": state %7B%22newstate%22%3A%22idle%22%2C%22oldstate%22%3A%22playing%22%2C%22type%22%3A%22state%22%7D

在上面的日志中,我单击"sample.mp4“,然后单击"mystream.mp4”,最后单击"rtgwait.mp4“。

为什么.hide()不能工作,为什么日志中有堆叠变量?当我每次点击按钮/调用函数时,它们不应该被清除吗?我假设这也是jwplayer7错误的原因,也是.hide()不能工作的原因。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 14:07:55

我发现了问题,这是额外的“。在我的类名/ id中,我的id是"filename.mp4“。为了解决这个问题,我不得不改变我的ID是如何生成的,并且省略了".mp4“部分。

我还找到了一个只显示点击信息的解决方案。

代码语言:javascript
复制
jQuery(document).ready(function() {
        jQuery('.s_l_whole_item').live('click', function(event) {
            jQuery('#hiden_karuselis > div').show()
            jQuery('#hiden_karuselis > div').not('#'+filename).hide()
        });
    });

现在我又遇到了另一个问题。因为我有文件名

代码语言:javascript
复制
 myStream-2015-08-10-08.51.50.076-CEST-0.mp4

这是由wowza媒体服务器生成的。有什么办法可以通过吗?作为类/id名称的一部分,而不是混淆css选择器?

票数 0
EN

Stack Overflow用户

发布于 2016-05-10 12:18:54

console.log(filename);正在将#ka_sample.mp4写到控制台,这意味着变量'filename‘的设置是正确的。

然后使用文件名变量('#ka_'+filename),它将查找ID为#ka_#ka_sample.mp4的元素,该元素不存在。

我会删除'#ka_'位,所以您应该有:

代码语言:javascript
复制
jQuery(this).closest('.hiden_karuselis').find(filename).hide()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37138124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档