Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery删除元素并在元素包含特定文件名时停止_Jquery_Css_Html - Fatal编程技术网

使用jQuery删除元素并在元素包含特定文件名时停止

使用jQuery删除元素并在元素包含特定文件名时停止,jquery,css,html,Jquery,Css,Html,我有一个相当愚蠢的插件,如果源文件名以错误的文件扩展名结尾,它还不知道如何完全删除视频标签 伪代码的工作原理如下: 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, behav

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

伪代码的工作原理如下:

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中缺少了一个括号,我肯定不是这样的…

您的语法肯定是错误的;
(函数…
语法不是有效的JavaScript。您需要在
)之间输入函数名,您可能正在查找该函数

如果我明白你想做什么,听起来你可以这么做:

$('.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;这可能会导致不可预测或错误行为。我建议您将其更改为类。

将else if更改为else,并将
if
移动到下一行。为什么当你的伪代码没有提到.jpg扩展名时,试图匹配它?谢谢各位。我之所以尝试匹配它,是因为我没有看到任何实现通配符解决方案的方法。我想你是指
}else if(
而不是
}else if{
在代码中。如果你将
{
更改为
,该部分将运行。在您花了几分钟的时间来解决这个问题后,我花了一周的时间来学习和记住jQuery。我很想让您喝一箱啤酒,但您却得到了答案复选标记。@canacast-很高兴我能帮上忙!不过,我希望能接受您的啤酒报价。