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を持つ要素が複数あるように見えます。1 つのページで ID を重複させてはなりません。予期しない動作やバグのある動作につながる可能性があります。それをクラスに変更することをお勧めします。

于 2013-05-15T20:57:08.640 に答える