0

我有一个相当愚蠢的插件,如果源文件名以错误的文件扩展名结尾,它还不知道如何完全删除视频标签。

伪代码的工作方式如下:

Div populates with a Video element
If Video element SRC isn't a .M4V file name extension, remove the parent div including the Video element
If Video element SRC is a .M4V file extension, behaves as normal.

我现在拥有的代码不起作用,但我不确定在哪里寻找一个好的解决方案。这只是我的语法吗?

        $('.aboveTheFold video').(function(){
             if( $('video #postvideo').attr('src').match(/\.(m4v)/) ) {
                $("#postvideo").detach().appendTo("#fold-above");
             } else if {
                $('#postvideo').attr('src').match(/\.(jpg)/) )
                {
                    $('.aboveTheFold video').remove();
                };
             }
        });

一种简化的方法是:

    $("#postvideo").attr('src').match(/\.(jpg)/) ).remove();

但是控制台现在告诉我 jquery.min 中缺少一个括号,我敢肯定不是这种情况......

4

1 回答 1

2

您的语法肯定是错误的;.(function...语法不是有效的JavaScript。您需要介于.和之间的函数名(,并且您可能正在寻找该each函数。

如果我理解你想要做什么,听起来你可以这样做:

$('.aboveTheFold video #postvideo')   
      .not('[src$=".m4v"]')          //elements whose src doesn't end with `.m4v`
      .each(function() {
          $(this).parent().remove();
      });

如果要匹配正则表达式,还可以将回调传递给not函数:

.not(function() {
   return !/\.m4v/.test($(this).attr('src'));
}) 

但是...请注意,这#postvideo是一个 ID,您的代码看起来像您有多个具有该 ID 的元素。页面上不应有重复的 ID;它可能导致不可预测或错误的行为。我建议你把它改成一个类。

于 2013-05-15T20:57:08.640 回答