• 締切済み

Javasprictのclick()がわかりません

WordPressで開いている動画をクリックすると閉じる方法を模索しています。 テーマの編集のfront-page.phpの一番下にて <video class="video-background" autoplay="autoplay" loop="loop" muted="" width="300" height="150"> <source src="http://~.mp4" type="video/webm" /> </video> と書き、 custom jsプラグインによるEdit JS Codeにて $("video-background source").click(function(){ $("video-background source").css("display","none"); }) としました。 http://www.re-creators.jp/blog/2008/06/24_38.html https://webkaru.net/jquery/click-event/ https://www.allinthemind.biz/markup/javascript/open_close.html これらのサイトを参考したところこの書き方で間違いなさそうなのですがどこかミスがあるでしょうか? 基本的な事の質問になってしまっているかもしれないです、正直なところ1日中調べに調べてもわからず。。。質問した次第です;ヒントでも良いので助言を頂けると助かります。

みんなの回答

  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.5

>結果は変わらなかった 回答文のコードが問題無く動作する事は確認済みですので。そうなるともっと根本的な原因があって、それがスクリプトの動作を阻害していると考えるのが妥当ですね。 WordPress云々と仰っていますので、その他のプラグインやテーマ本体で挿入しているスクリプトやCSS等が競合している可能性が高いと思われます。これ以上は実際のwebページのHTMLコードとそれに関連する全ての外部スクリプト&CSSを全て総合的に検証してみない事には問題解決には近付けないと思われます。

  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.4

え~っとまず大前提として「<source>タグには "display:*" の指定自体が無効」なので、仮にこのJSコードが過不足無く正常に動作したとしてもHTMLページ上では見た目の変化は何も起きません。つまり最初からそういうCSSの設定項目自体が存在しないので、存在しないCSSを幾ら変化させても何も起きません。 ではどうするかというと、"display:*" のCSS設定項目を持っている <video> に対して直に "display:*" を変化させる様にします。 (function($){ var v = $('.video-background'), v1 = v.get(0); v.click(function(){ v1.pause(); v1.currentTime = 0; v.css({'display':'none'}); }); })(jQuery); とりあえず上記の記述例で chromeでは正常に動作する事を確認済みです。恐らくIEやFireFox等でも大丈夫だと思います。ただ、このコードを実行させると動画の部分が完全に抜け落ちて消えてしまう事になるので、HTMLページ上の見た目が大きく変化する事になります。まあ、とりあえず実際に試してみて、気になる点や疑問が湧いたら、また別途に質問してみてください。

bot_seeker
質問者

お礼

非常に返信が遅れて済みません。 結果は変わらなかったです...。

  • hok212
  • ベストアンサー率66% (100/150)
回答No.3

こんばんは。 どのようなWordpressテーマをお使いになられているのか不明ですが、jQueryは正しく読み込まれていますか? 正しく読み込まれているのであれば、次のように書き換えるとどうでしょう。 $(".video-background source").click(function(){ $(".video-background source").css("display","none"); }) ↓↓↓↓次のように書き換える↓↓↓↓ jQuery(".video-background source").click(function($){ $(".video-background source").css("display","none"); });

bot_seeker
質問者

お礼

非常に返信が遅れて済みません。 結果は変わらなかったです...。

回答No.2

もしかしたら、わかったんですが・・・ それと、組み方を変えませんか? <div class="abcd"> <video //// <source //// </div> として、 どちらかをつかってください。 $("div.abcd").click(function(){ ← 通常用 $(document).on("click", "div.abcd", function(){ ← DOM用 $("div.abcd video").css("display","none"); } と、1階層上にあげてみてください。 多分、これでうまくいきます。 <video ←実際に表示してるのは、こっち! <source ←これは、上のVIDEOに対するパラメタなので、こいつにNONEしても意味がない。 で、解決すると思いますよ。 では!お大事に~(病人かっ!)

bot_seeker
質問者

お礼

二度も回答本当に有難う御座います! 済みません、HP作成が出来る程度の者にはレベルが高すぎてちょっとが手を出す範囲じゃなかったです(-_-; 専門用語がまずさっぱりで、そこから勉強してきます…

回答No.1

$("video-background source").click(function(){ $("video-background source").css("display","none"); }) 先頭に"."がないですよ! "video-background source" これだと、Classではなく 「video-background」 という「タグ」を探して、 配下のsourceという「タグ」を差してます。 正しくは 「video-background」 という「クラス」を探させるのでは?

bot_seeker
質問者

補足

回答有難うございます。忘れていました。入れましたが変わりませんでした…。他にもいろいろ方法を試してあらゆる所で質問しましたがダメで、解決する回答は来ませんでしたが一人が気になる事を言っていました。ブラウザがクリックを拾い切れていないとか。動画とか画像はボタン化しないといけないって事でしょうか。リンク化だと閉じるのではなく他ページに飛ぶか、同じURL先にリンクすると動画が再表示されるだけですし。

関連するQ&A

  • iphoneでmp4動画が再生されません。。。

    下記videoタグを使用して、コードを記述しておりますが再生されません。 ファイルサイズも1.5MBなので、動画にしてはそこまで大きくないと思います。 サーバー側に問題があるのか、記述に問題があるのでしょうか? <video playsinline autoplay muted loop> <source src=”movie.mp4″> </video>

  • videoタグについて スマホで動画が再生されない

    動画の埋め込みについて教えてください。 新しく動画をつくったので差し替えたのですがスマホで再生されないので教えてください。 <埋め込みタグ> <video src="●●●.mp4" playsinline loop autoplay muted></video> ループ再生させたい 古い◆◆◆.mp4 はスマホで再生されていました。 ファイル名だけ新しい●●●に変更しました。 playsinline loop autoplay muted は◆◆◆.mp4も●●●.mp4も同じ設定です。 PCではちゃんと再生せれるので、ファイル名間違いではないと思います。edge,Google Chrome,Firefoxで再生を確認しました。 <ファイルサイズ> ◆◆◆.mp4 8.61MB 総ビットレート542kbps ●●●.mp4 2.27MB 総ビットレート2111kbps スマホだと画面が真っ白になります。 何が原因でしょうか。ご教授願います。

    • ベストアンサー
    • HTML
  • クリックを自動化

    クリックを自動化 ソースのクリック自動化を求めています。 以下のソース(js)があります。 $(function() { $('a').click(function(e) { e.preventDefault(); var $this = $(this); var horizontalPadding = 30; var verticalPadding = 30; $('<iframe id="externalSite" class="externalSite" src="' + this.href + '" />').dialog({ title: ($this.attr('title')) ? $this.attr('title') : 'External Site', autoOpen: true, width: 1100, height: 2500, modal: true, resizable: true, autoResize: true, overlay: { opacity: 0.5, background: "black" } }).width(1100 - horizontalPadding).height(2500 - verticalPadding); }); }); aタグの文字をクリックしたときに行える処理なのですが…これをクリックされた時に呼び出されるのではなく、onloadなどで呼び出せれるようにしたいのですが、はっきり言って分かりません。 大変困っております。 ご助言をよろしくお願い致します。

  • 動画ヘッダーについて

    有識者の皆様、教えていただけませんでしょうか。 コーディング初歩レベルです。 動画ヘッダーにする際に、よくわからないことがあります。 フルスクリーンでの動画ヘッダーの場合ですとpositionをfixにして 全体まで広げてあげれば良いと思うのですが、 positionをabsoluteにして、スクロールした際に流れてゆくヘッダーに したいと考えています。 高さはビデオサイズに従うような形で横幅は100%という感じにしたいのですが、 その際にヘッダーより下のコンテンツ(コンテンツ部分に設置したバナーやテキスト) などがビデオの上に来てしまいます。 これを避けるためにビデオの上にdiv要素をつくりキャッチコピーなどをつけて heightで高さを合わせることもやってみたのですが、 拡大や縮小した際に、やっぱりコンテンツ部分が重なってきてしまったり 表示がくずれてしまったりします。 これらはどのように解決したらよろしいのでしょうか。 topからざっくりですが100px幅くらいの高さにロゴとグローバルメニュー、 その下に動画を配置、その下からコンテンツとなりバナーが3つとなります。 以下、実装方法の解説をして頂いているサイトさんから引用させて いただきました。 【HTML】 <body> <video preload autoplay muted loop class="background-video"> <source src="/video/video.mp4"> <source src="/video/video.ogv"> </video> <div class="wrapper"> <h1>テキスト</h1> <p>Lorem Ipsum</p> </div> </body> 【CSS】 .background-video { position: absolute; bottom: 0px; right: 0px; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: -1000; overflow: hidden; } .wrapper { position: absolute; top: 50%; left: 0; width: 100%; z-index: 1; } 実装方法までは良いかと思ったのですが、 実際にやってみるとどうしてもコンテンツの部分が上に来てしまうため、 いろいろなサイトを参考にしてみましたが、 思ったようにうまくできません。 今までにも何度か挑戦してこの問題があって挫折してきているだけに、 今後のためにも解決しておきたいと考えております。 普段皆さまがやっている方法や上のコードの場合だとこうなるなど、 どちらでも大丈夫です。 ご教示頂く上で皆様が普段されていらっしゃることから学ばせていただくことで、 生きた知識の習得と現場力を高めたいと考え質問させていただきました。 お手数かとは思いますが、何卒よろしくお願い致します。

    • ベストアンサー
    • CSS
  • quicktipeMOVIE クリック後にsrcファイルを読み込む方法

    事故解決が困難な為、質問させていただきます。 現在下記objectタグにてquicktimeMOVIEを再生するようにしています。 <object name="QT" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" type="video/quicktime" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="160" height="136"> <param name="src" value="aaa.mov"> <param name="qtsrc" value="quick.jpg"> <param name="autoplay" value="false"> <param name="controller" value="true"> <param name="bgcolor" value="#000000"> <param name="SCALE" value="tofit"> <embed src="aaa.mov" width="160" height="136" autostart="false" autosize="true" showcontrols="true" playcount="1" qtsrcchokespeed="33600" autoplay="false" cache="true" scale="aspect" controller="true" loop="false" type="video/quicktime" target="quicktimeplayer" targetcache="true"></embed> </object> しかしこの方法だとページを読み込む再に動画も読みにいってしまいます。クリック後にembed srcで指定されている動画を読みにいくような方法はございませんか? ※再生するときはコントロールパネルの再生ボタンをクリック。 ※自動再生のことではないです。 どなたかご存知の方がいましたらお願いいたします。

    • ベストアンサー
    • HTML
  • jQueryで追加した要素がマウスホバーに反応しない

    jQueryを使って、ボタンを押すと要素を追加しています。 後から追加された要素はマウスホバーなどが有効にならないのですが、 対象方法などあるでしょうか。 下記のようなソースで質問の状態になります。 よろしくお願いします。 <html> <head> <title>test</title> <script type="text/javascript" src="system/jquery-1.3.2.min.js"></script> <script type="text/javascript"> <!-- jQuery(document).ready(function($){ jQuery(".edit").hover( function () { jQuery(this).css("background","yellow"); }, function () { jQuery(this).css("background","none"); } ); jQuery(".insert").click(function () { var html = "<div class='edit'><p>add-text</p></div>"; jQuery("#sortable .edit:first").before(html); }); }); // --> </script> </head> <body> <div><INPUT class="insert" type="button" value=INSERT></DIV> <div id="sortable" style="width:200px;"> <div class="edit"> <p>text1</p> </div> <div class="edit"> <p>text2</p> </div> <div class="edit"> <p>text3</p> </div> </div><!-- id="sortable" --> </body> </html>

  • jQueryでCSSの背景画像を切り替えたい

    見出しをクリック後にCSSで指定している背景画像を変えるため、jQueryでCSSを変更させてみたところ上手くいきません。 jQueryで指定する変更後の背景画像を絶対パスに換えたら上手くいったので、 パスの指定方法が悪いところまでは分かったのですが、相対パスでの指定方法がわからなくなりました。 WordPress環境で下記のコードを使用しています。 ご教授の程、よろしくお願い致します。 【 jQuery】 ○ディレクトリ : テーマフォルダ/js/change.js jQuery(function() { jQuery("h3 div.class").hide(); jQuery("h3").click(function() { jQuery(this).next().slideToggle("fast"); jQuery(this).css("background-image" , "url('img/pic2.jpg')"); }); }); 【CSS】 ○ディレクトリ : テーマフォルダ/style.css h3 { background: #7c8187; background-image: url(img/pic.jpg); cursor: pointer; } 【画像】 ○ディレクトリ : テーマフォルダ/img/pic.jpg テーマフォルダ/img/pic2.jpg

    • ベストアンサー
    • CSS
  • css ,videotタグ。ホームページに動画を埋

    css ,videotタグ。ホームページに動画を埋め込んだのですが、左右に黒帯ができてしまいます。この黒帯を無くしたいです。 ソースコードは下にあります。object-fit: fill;でも治りません。 動画は元は1280×720サイズで作成し、ホームページ用にサイズを小さくしてmp4に書き出しました。1280×720から896×414に変更、アスペクト比16:9でOK。 1280×720の時は黒帯はでませんが、サイズを896×414に変更してアップロードすると黒帯が出てしまいます。 動画編集ソフトで書き出しする時アスペクト比は自動で16:9になるので間違ってないと思います。付属画像参考 ●実際のホームページのURLは以下です (何故かアクセス制限が出て見れなかもしれませんので、ソースコードと付属画像も下に提示してます。) https://rensyuu.s205.xrea.com/rensyuu12.tokyo/PHPMailer/201.html ★参考にしたサイト動画の大きさ(デバイス別とアスペクト比)の参考サイト https://www.somethingfun.co.jp/video_tips/movie_resolution#:~:text=%E7%94%BB%E9%9D%A2%E3%81%AE%E8%A7%A3%E5%83%8F%E5%BA%A6%E4%BB%A5%E4%B8%8A%E3%81%AE,%E8%80%83%E3%81%88%E3%82%8B%E3%81%A8%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82 ★ソースコードは以下です。 <!DOCTYPE html> <html lang="ja"> <head> <meta content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ビデオ調節</title> <style> .test{ text-align: center; object-fit: fill; } </style> </head> <body> <div class="test"> <video autoplay="" loop="" muted="" playsinline="" id="videosize"> <source src="hgh.mp4" type="video/mp4"> </video> </div> </body> </html>

    • ベストアンサー
    • CSS
  • 動画のソース記述について

    HTMLの本を片手に電子アルバムを作成中です。 Windows98でIEを使用しています。 公開する予定はないので、サーバーにはアップせず、 独りで楽しむだけです。 その中に人からもらったavi形式の動画があるのですが、 ホームページ上で音、画像とも表示できません。 通常、aviの表示にQuicktime5を使っています。 問題の動画もQuicktime5ではきちんと表示されました。 ソースは以下のとおりです。 間違いを直して下さい。よろしくお願いします。 <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY BACKGROUND="../s64_51.gif"> <TABLE BORDER="0" WIDTH="100%" HEIGHT="100%"> <TR><TD VALIGN="middle" ALIGN="center"> <EMBED SRC="m01.avi" WIDTH="320" HEIGHT="260" ALIGN="BOTTOM" CONTROLLER="TRUE" LOOP="FALSE" AUTOPLAY="TRUE"> </TD></TR> </TABLE> </BODY> </HTML>

  • ストリーミング映像のランダム表示

    <TD width="320" height="266" nowrap> <EMBED src="01.wmv" width="320" height="256" autostart="true" autosize="true" showcontrols="true" playcount="0" autoplay="true" scale="aspect" controller="true" loop="true" type="video/x-ms- wmv"> </TD> 例えば、上記のようなソースで料理方法をビデオに撮った各4分程度の 01.wmv, 02.wmv, 03.wmv のストリーミング映像を3つ表示させたいとします。 すると、こんなにユーザに対して優しくないHPは見たことがありません状態です(笑)。 ⇒ ペンティアム4 2.8GHz メモリー512MB 程度でないとスムースな表示はできません。 そこで考えました。 ストリーミング映像を1つ表示にして、ランダムに表示させることで、 軽くできないものか? それともサーバにUPする容量でHPの重さは決まってしまうのか? 「軽くなるのであれば、ランダム表示のプログラム」をご教授願いたいと想います。 ちなみにWEBサーバは自宅サーバ(Bフレッツ)ですので、 今まで容量などは気にしないで作成していました。 以上、よろしくお願いします。

    • ベストアンサー
    • HTML