• 締切済み

このコードを簡潔に書くには?

35fa8e3cの回答

  • 35fa8e3c
  • ベストアンサー率39% (9/23)
回答No.1

このコードを簡潔に書くと以下のようになります。 ---- this.code;

関連するQ&A

  • jQuery hover時に遅延させる方法

    よろしくお願い致します。 jQueryを使用して以下のようなコードを書いております。 $('#hoge').hover( function(){ $(this).animate({'marginTop':'100px'},500,'easeOutQuart'); }, function(){ $(this).animate({'marginTop':'0px'},500,'easeOutQuart'); } ); 上記のコードで問題なく動作するのですが、要素(#hoge)からマウスを離したときにだけ遅延処理をさせたいと思い、以下のようなコードを書いてみたのですが動作しません。 $('#hoge').hover( function(){ $(this).animate({'marginTop':'100px'},500,'easeOutQuart'); }, function(){ setTimeout(function(){ $(this).animate({'marginTop':'0px'},500,'easeOutQuart'); },1000); } ); この場合、どのようなコードを記述すれば良いのでしょうか?

  • JQUERYについて教えてください。

    JQUERYについて教えてください。 readyがDOMを読み終わってから実行しろという意味は分かったのですが、 あったりなかったりするfunction()はどんな意味なのでしょうか? function(){ $(this).stop().animate({'marginBottom':'60px'},150); },function(){ $(this).stop().animate({'marginBottom':'0px'},120); こちらにあるのですがメソッドに一個必須なのでしょうか? 例 <script type="text/javascript"> $(document).ready(function(){ $('div#goto_top').hover( function(){ $(this).stop().animate({'marginBottom':'60px'},150); },function(){ $(this).stop().animate({'marginBottom':'0px'},120); </script>

  • PCスマホの画面切り替えで領域がうまくとれません

    PC/スマホ兼用対応のページを作成しており、画面サイズが小さくなった際には横3グリッド(width300px/グリッド)から横2グリッド(width360px/グリッド)に変更するようなページです。 その中で、PCの際にはマウスオーバー時にイメージタイトルがスライドイン/スライドアウトするようにしているのですが、以下のスクリプトで画面サイズが変更するたびに値を取得しているつもりなのですが、一度PCでマウスオーバーを行い、スマホサイズに切り替えると左から300pxのところでイメージタイトルが残ってしまってしまいます。 逆の場合も、animation(left:'●●px')で指定した場所に移動してくれないのですが、ご教授いただけないでしょうか? 初めての質問なため、足りない点など多いかと思いますが、よろしくお願いいたします。 <script type="text/javascript"> window.onload = function(){ resizeTextArea(); } window.onresize=function(){ resizeTextArea(); } function getBrowserWidth() { if ( window.innerWidth ) { return window.innerWidth; } else if ( document.documentElement && document.documentElement.clientWidth != 0 ) { return document.documentElement.clientWidth; } else if ( document.body ) { return document.body.clientWidth; } return 0; } function resizeTextArea(){ var w = getBrowserWidth(); if (w >= 960) { //マスオーバー時に右にスライド $('.slideright').hover(function(){ $(".cover", this).stop().animate({left:'0px'},{queue:false,duration:300}); }, function() { $(".cover", this).stop().animate({left:'-300px'},{queue:false,duration:300}); }); //マスオーバー時に左にスライド $('.slideleft').hover(function(){ $(".cover", this).stop().animate({left:'120px'},{queue:false,duration:300}); }, function() { $(".cover", this).stop().animate({left:'300px'},{queue:false,duration:300}); }); }else{ $('.slideleft').hover(function(){ $(".cover", this).stop().animate({left:'180px'},{queue:false,duration:0}); }, function() { $(".cover", this).stop().animate({left:'180px'},{queue:false,duration:0}); }); } } </script>

  • 「Sliding Boxes and Captions with jQ

    「Sliding Boxes and Captions with jQuery」のカスタマイズについて よろしくお願い致します。 http://www.css-lecture.com/log/javascript/035.html の「マウスオーバー時にキャンプション表示」について、マウスオーバーではなく、「該当エリアをクリックしたときにキャプションが表示され、もう一度クリックしたらキャプションが閉じる」というものにしたいのですが、コードをどのように変更したら実現できますでしょうか? 下記のコードの「.hover」を「.click」に書き換えたところ、クリックでキャプションが開くようになったのですが、「もう一度クリックするとキャプションが閉じる」という部分が、知識が足りず自力では実現できなかったので質問させて頂きました。 <script type="text/javascript"> $('.boxgrid.captionfull').hover(function(){ $(".cover", this).stop().animate({top:'220px'},{queue:false,duration:160}); }, function() { $(".cover", this).stop().animate({top:'350px'},{queue:false,duration:160}); }); }); </script> 分かりにくい箇所がありましたら補足説明させて頂きますので、どうぞよろしくお願い致します。

  • マウスオーバー時に常にgifアニメ最初からスタート

    マウスオーバー時にgifアニメの画像を表示させているのですが、 ループし続けてる状態で、途中から始まってしまいます。 マウスオーバーするたびにで初めからアニメーションを表示するにはどうしたらよいでしょうか? よろしくお願いします。 $('hoge').hover(function(){ $(this).append("<img src='~/images/backmovie-1.gif' class='covermovie'>"); },function(){ $("img.covermovie").remove(); });

  • animateを使用したマウスオーバー時の反応

    jQuery初心者で、知識が浅いのでご教授頂けると幸いです。 横1列に下記のような順番でテキストや画像を並べています。 ================================= タグ 画像 テキストテキストテキスト          テキスト ================================= このBOX自体に class="top_odai" とつけています。 これが30段程、同じものが繰り返されます。(タグやテキスト内容は変わります。画像は同じものです) .top_odai内のリンクを探して、このBOX全体がリンクになるように設定しています。 マウスオーバー(hover)すると、「画像が少し大きくなる&タグが左にずれる」動作が起きるようにしました。 テキスト自体は、色が変わってシャドウが付きます。 この設定をjQueryで書いてみました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $(document).ready(function() { var linkboxes = $('.top_odai'); for (var i=0; i<linkboxes.length; i++){ var readmores = $('div.title'); for (var j=0; j<readmores.length; j++){ $('.top_odai').click(function() { var anchorTags = this.getElementsByTagName("a"); window.location = anchorTags[0].href; }); } } }); $(function(){ $('.top_odai') .each(function(){ $('.top_odai div.headwill img').css({'width':'20px','height':'20px'}); }) .hover(function(){ $(this).addClass('top_odai_hover'); $('div.title a').css({'color':'#FF3300','text-decoration':'none'}); $('.top_odai div.headwill img').stop().animate({'width':'30px','height':'30px','marginTop':'-5px'},'normal'); }, function(){ $(this).removeClass("top_odai_hover"); $('div.title a').css({'color':'#525252','text-decoration':'none'}); $('.top_odai div.headwill img').stop().animate({'width':'20px','height':'20px','marginTop':'0px'},'normal'); } ); }); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー これで、記述はかなりスマートじゃないと思いますが、、、一応希望通りの動きはします。 ただこれでは全ての「class="top_odai"」に反応してしまいます。 1つのリンクに触れると、他の段の全てのBOXが同じく動いてしまいます。 下記は動作のテストページになります。 http://music333.oops.jp/test/test.html これを1つのリンクに触れたら、そのBOX(.top_odai)だけ上記の動きを させたいのですが、どのようにすれば良いのか、、、かなりハマっております。 各top_odaiに連番のidを割当て指定してみたりと色々試してみましたが全滅でした。 どのように書き換えたら、良いでしょうか? アドバイス・ご教授どうぞ宜しくお願い致します。

  • :not(:animate)の不具合

    こんにちは、たとえば以下のようなコードにおいて、対象要素が小さい場合、マウスアウトを認識せずに、ホバーの状態でアニメーションが止まってしまいます。mouseout, mouseleaveにしても症状は同じです。何か対応策などはあるのでしょうか? $("#smallBox").hover(function(){ $("#target:not(:animate)").css("backGround", "red"); },function(){ $("#target:not(:animate)").css("backGround","blue"); また、0.5秒以上マウスが要素にホバーしていたらプログラムを実行、0.5秒以内にマウスがアウトしたらば実行しない・・というようなことはできるのでしょうか。理解せずにコピペ、というようなことはあまりしたくないので、複雑なコードになるようであれば、あきらめるのですが。 よろしくお願いします。

  • リンク画像のマウスオーバー時の下線を消したい。(a:hover 関連。

    テキストリンクについては、マウスオーバー時に下線が表示されても良いのですが、画像リンクについては下線を表示させたくないと考えています。 どうやったら、切り分けられますでしょうか。 現在、cssファイル内にて、 ---------------- a:hover { color: #色; border-bottom: 1px solid #色; } ----------------- と書いてあり、これがテキストリンクにも画像リンクにも影響しています。 ------------------- 【CSS】 img{ border:0; } -------------------- ではダメでした。 ------------------------- 【HTML】 <a href="リンク先" class="img"><img src="画像URL"></a> 【CSS】 .img a:hover { border-bottom:0px; } ------------------------- →これでもダメでした。 どなたかご助言よろしくお願いします。

    • ベストアンサー
    • HTML
  • jQueryにて、.toggle()でアニメート

    .toggle( function(){ } , function(){ } ); こういう形で無名関数の中には.animateを入れてアニメーションを交互するようにしています。 (もうすぐこの形が使えなくなるそうですが…) やりたいことはもう少し複雑で、まず.toggleするボタンを2つ以上にしたいと思っています。 それぞれのボタンは元々、 ボタン1:設定した"hoge1"を押すとあるテキストエリアが存在するボックスが大きくなったり小さくなったりする。hoge1ボタンもそれに合わせてwidthが大きくなったり小さくなったりする。 ボタン2:"hoge2"を押すとテキストエリアに対して.val("特定のテキスト").focus();するようにして"特定のテキスト"を追加してその後フォーカスするようなボタン。 これらは別々にちゃんと動いていまして、そこまでは出来てるんですが ボタン2の"hoge2"に、押したら 『ボックスが開いた上でテキスト追加のフォーカス』 という動作を追加したいと思い $(".hoge1, .hoge2").toggle(function(){ $(".textareabox").animate({width:"300px", height:"toggle", opacity:"toggle"}); $(".hoge1").animate({width:"300px"}); },function(){ $(".hoge1").animate({width:"150px"}); $(".textareabox").animate({width:"150px", height:"toggle", opacity:"toggle"}); }); こういう風にボタンを2つともセレクトすると、どちらか一方のみを使うのであれば動くんですが 当たり前のことに"hoge1"を一度だけ押してから"hoge2"を押すと .hoge1のwidthは戻らずに、.textareaboxのみ引っ込んで(toggleして)、そこからずれていきます。 ややこしいのですが、場合分けすると (".hoge1")をクリックしたら 未アニメート時:出す 既アニメート時:ひっこめる ("hoge2")をクリックしたら 未アニメート時:出して.val().focus() 既アニメート時:出したままで.val().focus() こういうことにしたいです。.val.focusは別でscript書いてます。 :not(:animated)とかいうのをググって見つけたんですがいまいちわかりません。 初心者なので前提からしてどこか間違ってるかもしれませんが どなたかお知恵拝借願います。。。

  • メニューボタン画像のロールオーバー時の処理について

    以下のスクリプトを用いてドロップダウンメガメニューを作成しています。 jQuery MegaMenu Plugin http://www.geektantra.com/2010/05/jquery-megamenu-2/ このメニューのボタンを画像にし、ロールオーバー時には透過して背景が見えるようにしたいと考えています。 --------------------------------------- <script type="text/javascript" src="/_js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="/_js/jquery.megamenu.js"></script> <script type="text/javascript"> $(function() { .find('img.btn').hover( function(){ $(this).stop().animate({'opacity' : '0'}, 200); }, function(){ $(this).stop().animate({'opacity' : '1'}, 500); } ); }); </script> <ul id="megamenu"> <li> <a><img src="../_images/btn_01.jpg" alt"ボタン1" class="btn"/></a> <div>コンテンツA</div> </li> <li> <a class="mm-item-link-hover"><img src="../_images/btn_02.jpg" alt"ボタン2" class="btn"/></a> <div>コンテンツB</div> </li>↑※このメニューにロールオーバーしている場合、class="mm-item-link-hover"がaに追加される。 <li> <a><img src="../_images/btn_03.jpg" alt"ボタン3" class="btn"/></a> <div>コンテンツC</div> </li> </ul> ------------------------------------- 上記のように記述して、ボタン画像にロールオーバーするとドロップダウンメニューが出現、さらにそのボタン画像が透過し、背景が見えるようにできました。 しかし、画像からマウスをおろしてドロップダウンメニューに移動すると透過が戻ってしまいます。 jquery.megamenu.jsの処理で、ドロップダウンメニューにロールオーバーしている間、class="mm-item-link-hover"がaに追加されています。 これを利用して、a.mm-item-link-hoverのなかのimg.btnを透過GIFに置き換えたいと思いましたが、うまく行きません。 【追加したスクリプト】 $(function() { $("a.mm-item-link-hover").each(function() { $("img.btn").attr("src", "/img/blank.gif"); }); }); 上記の処理の方法は、考え方としては正しいでしょうか? また、その場合のスクリプトはどのように書けばよろしいでしょうか? ご教授頂けると非常に助かります。