使用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-很高兴我能帮上忙!不过,我希望能接受您的啤酒报价。