2016-11-14 1 views
1

YouTubeとvimeo(そして最終的には他のサイト)の動画を埋め込むjqueryプラグインを作っています。今、私はこのコードを持っている:URLが複数の正規表現変数と一致するかどうかを確認しますか?

(function($) { 
    $.fn.embedFrame = function() { 
     var youtube = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; 
     var vimeo = /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g; 

     this.filter("a").html(function() { 
      // CHECK IF THE LINK HREF MATCHES ANY OF THE ABOVE REGEX VARIABLE RULES 

      // IF THE HREF MATCHES, RETURN AN IFRAME EMBED OF THE VIDEO 
     }); 

     return this; 
    }; 
}(jQuery)); 

私はいくつかの質問を持っている:リンクがhref一致正規表現のルールのいずれかを場合

  1. はどうすれば確認できますか?
  2. 私のコードを整理する良い方法はありますか?私は将来さらに多くのビデオサイトを追加する予定です。

ありがとうございます。

答えて

1

は、感謝を配列またはオブジェクトであなたの正規表現を維持し、リンクは素晴らしい作品と彼ら

(function($) { 
    $.fn.embedFrame = function() { 
     var filter = { 
      youtube : /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/, 
      vimeo : /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g 
     } 

     var videos = this.filter(function(_, el) { 
      if (el.tagName.toLowerCase() !== 'a') return false; 

      return Object.keys(filter).some(function(reg) { 
       return filter[reg].test(el.href); 
      }); 
     }); 

     return this; 
    }; 
}(jQuery)); 

FIDDLE

+0

のいずれかに一致するならば、単に反復して確認してください!クリックしたときにリンクを埋め込むことができるように、プラグイン内で「クリック中」のイベントを登録するにはどうすればよいですか? –

+0

このようなもの - > https://jsfiddle.net/4ofv96zv/1/ – adeneo

+0

パーフェクト!ありがとう。 –

関連する問題