2011-11-16 13 views
3

私はこれを約5時間苦労しており、ついに手がかりを得ました。ここでjQuery if else statement and data()

jQuery(document).ready(function(){ 
    jQuery(".thumbnail").bind("click",function(){ 
    var elem = jQuery(this); 
     if((elem).data('test')) { 
      alert('data is test'); 
      elem.data('test',false); 
     } 
     else { 
      alert('data is not test'); 
      elem.data('test',true); 
     } 
    }); 
}); 

をjfiddleです:

は、ここで私は私のウェブサイト上で使用しているコードです。

http://jsfiddle.net/Fe678/

あなたはそれが1つのアラートを起動する必要があり、「サムネイル」(どちらか「のデータはテストです」または「データはテストではありません」)をクリックします。

WordPressページ(localhost)で同じコードを試してみると、「データは設定されていません」と「データが設定されています」 - この奇妙な動作の原因は何ですか?

残念ながら、私はソースを提供できません。私はこれが何か共通のものであり、おそらくいくつかのjQueryウィザードが答えを知りたいと思っていますか?どういうわけか...?

+0

私はフィドルでうまく動作します。 –

+1

スクリプトを2回追加できますか? –

+0

Thieのスクリプトは2回含まれていませんが、5時間後には、ちょうど数分前に外部ファイルでうまく動作することが分かったので、このSOの質問で少し急いでしまいました。私はまだ何が間違っているのか分からないが、これはヒントだろうか? –

答えて

1

私はそれがjQueryのバグだが、次のいずれかとは思わない:

  • WordPressのテンプレートは、最終的にコードが二度含まれることになり。これをデバッグするには、.bind()の呼び出しの前に警告を出し、一度だけ確認することを確認します。
  • WordPressのバージョンで何らかの理由で実際に2つの重なり合う '.thumbnail'クラスオブジェクトがあり、両方をトリガーする "クリック"があります。あなたのサムネイルをjsfiddleで余分な< DIVクラス=サムネイル>でラップすると、これがどうなるかがわかります。これをデバッグするには、メソッドが呼び出されているオブジェクトを示す警告ボックスを入れ、そこに2つの別個のオブジェクトがないことを確認します。