2016-10-10 5 views
2

角度のディレクティブを使用して、ページの左右の列を使用しています。 <left-column></left-column>および<right-column></right-column>。ユーザーが<a href="#target1">Target 1</a>をクリックすると、の右側の列に対応する<div id="target1">Target 1</div>が見つかります。JQuery toggleClass()をオンにしてからオフに戻す(または削除する)

これはうまくいきますし、今私がしようとしているのは、特定のdivの背景をクリックした後のものです。何かフラッシュや何か、私はそれのためのいくつかのCSSがあります。だから私はそのCSSクラスを切り替えるしたい、その後、そのクラスを削除する(またはそれをオフに切り替える)。

私はsetTimeout()機能を使用しようとしていますが、機能していないようです。何か案は?

マイエラーは次のとおりです。

Uncaught TypeError: Cannot read property 'toggleClass' of undefined 

マイJSです:

var highlight = { 

    onReady: function() { 

     $(document).on('click', 'left-column > div', function(event) { 

      var id = $('a', this).attr('href').split('#'); 
      var target = $('right-column > div').find('#' + id[1]); 

      target.toggleClass('gas'); 
      var junk = setTimeout(function(target) { 
       target.toggleClass('gas'); 
      }, 1000); 

      event.preventDefault(); 

     }); 

    } 

}; 


$(document).ready(highlight.onReady); 
+0

、良い、しかし、あなたが何を意味するかわからない、本当の関数backOff()ですか? – Kenny

+0

あなたが見ているものを見ることができるように、フィドルを投稿してください。 – Fantasterei

+0

いいえ...タイトルはhumerousでした。 – charlietfl

答えて

4

あなたの問題は、あなたがsetTimeoutに渡されたコールバックでの引数としてtargetを期待しているということですが、実際に引数を渡していないので、setTimeoutコールバックのローカルのtargetは0にアクセスしません(シャドウ)。は外部スコープで利用できます。

あなたのエラーを修正するコールバックパラメータからtargetを削除する:

var junk = setTimeout(function(/* remove target from here */) { 
    target.toggleClass('gas'); 
}, 1000); 

それともたい場合は、明示的にそれを渡すことができますが、それはその既に利用以来、冗長になる:母

var junk = setTimeout(function(target) { 
    target.toggleClass('gas'); 
}, 1000, target); // <--- you can pass the target along here 
+0

を試してみてください。 (私は、システムが私にできるときにあなたの答えを受け入れるでしょう。)ありがとう! – Kenny

+0

問題のない相手、喜んで助けてください:) – nem035

関連する問題