2016-04-06 17 views
1

ここでは、複数のdiv間を切り替える必要があるStackoverflow関数について説明しました。私はJSFiddleで試してみました。しかし、私にとっては、ウェブサイト上では動作しません。私は本当にjavascript/jQueryがうまくいかないので、本当に助けてくれてうれしいです!もう1つのことは、リンクを設定することですか、私はちょうどクリックしたクラス "アクティブ"、それは下線か何か、選択されたセクションを参照しているだろうか? ありがとう! - FIDDLE HERE:https://jsfiddle.net/vkmw86bp/jQuery - 複数のdiv間を切り替えることができません

コードは以下のとおりです。

HTML:

 <div id="sluzby-nabidka" class="section"> 
     <div class="sluz"><a href="#" data-slide-id="#slidingDiv">div 1</a></div> 
     <div class="sluz"><a href="#" data-slide-id="#slidingDiv_2">div 2</a></div> 
     <div class="sluz"><a href="#" data-slide-id="#slidingDiv_3">div 3</a></div> 
     <div class="sluz"><a href="#" data-slide-id="#slidingDiv_4">div 4</a></div> 
     <div class="sluz"><a href="#" data-slide-id="#slidingDiv_5">div 5</a></div> 


     </div> 



     <div id="text-sluzba" class="section"> 

<div id="slidingDiv" class="slide-div">1</div> 
<div id="slidingDiv_2" class="slide-div" style="display:none;">2</div> 
<div id="slidingDiv_3" class="slide-div" style="display:none;">3</div> 
<div id="slidingDiv_4" class="slide-div" style="display:none;">4</div> 
<div id="slidingDiv_5" class="slide-div" style="display:none;">5</div> 

     </div> 

JS:

$.fn.showHide = function (options) { 

    //default vars for the plugin 
    var defaults = { 
     speed: 1000, 
     easing: '', 
     changeText: 0, 
     showText: 'Show', 
     hideText: 'Hide', 
     slideDiv: '.slide-div' 
    }; 
    var options = $.extend(defaults, options); 

    return this.each(function() { 
     $(this).click(function() { 
      $(options.slideDiv).hide(); 
      // this var stores which button you've clicked 
      var toggleClick = $(this), 
       toggleDiv = $(this).data('slide-id'); 
      // here we toggle show/hide the correct div at the right speed and using which easing effect 
      $(toggleDiv).fadeToggle(options.speed, options.easing, function() { 
       // this only fires once the animation is completed 
       // if(options.changeText==0){ 
       //$(toggleDiv).is(":visible") ? toggleClick.text(options.hideText) : toggleClick.text(options.showText); 
       //} 

      }); 


     }); 

    }); 

}; 

$('a').showHide({'slideDiv' : '.slide-div'}); 
+0

をあなたが得るエラーは何ですか:あなたがこの電話をかける際に、ルックアップがにshowHide機能を添付するために、任意のアンカータグを見つけていないので、DOMの準備ができる前に、あなたのコードが実行されているように私には思えます?コンソールログ(F12)を確認しましたか? –

答えて

2

私がコメントを追加するにはまだ十分な評判を持っていないので、私が問題に話をして、より多くの情報のために頼みますよ、必要であれば。

JSFiddleをロードしたとき、JQueryライブラリがフィーリング自体に含まれていなかったため、JSFiddleをロードしても機能しませんでした。一度フレームワークを変更した&拡張子の選択はになりました。 JQueryライブラリで、私はRunを押してしまいました。つまり、IMOとは、JQueryのインポートがHTML DOMの間違った場所にあるか、提供したコードを打つ前にDOMが準備されるのを待っていないことを意味します。ソム例:これは、DOMがロードされるまで、jQueryのコードが実行されないことを保証します

$(document).ready(function() { 
    // Your code here 
}); 

<html> 
    <head> 
     <title> 
     </title> 
     <!-- normally, JQuery script gets added here --> 
     <script type="javascript" src="path/to/jquery.js"></script> 
    </head> 
    <body> 

<!-- then, import the above code here, either as a separate JS file or inside some <script></script> tags --> 
     <script type="javascript" src="path/to/showHide.js"></script> 
    </body> 
</html> 

また、あなたはあなたが提供されているコードをラップする必要があります。

$('a').showHide({'slideDiv' : '.slide-div'}); 
+0

'$(document).ready(function(){'が動作し始めました!ありがとうございました!そしてbtw、クラスをアクティブにする方法を知っていますか? "私がちょうどクリックしたリンクに? –

+0

私はもっと明白な話をするためにいくつかのスクリプトタグを追加しました: –

+1

$(this).click(function(){})の中に;コード、place $( 'a')。removeClass( 'active'); $(this).addClass( 'active');これにより、すべてのアンカータグからアクティブなクラスが削除され、現在クリックされているアンカータグ –

関連する問題