2011-02-25 10 views
0

ユーザが「a.open-popup」をクリックすると、変更するHTML(1つの関数)と開くためのシンプルライトボックス(別の関数)が必要です。これはどうすればいいですか?私は2つの機能のうちの1つをトリガすることしかできません。1セレクターでトリガー2イベントをどのようにしますか?

HTML:

<div> 
     <p class="plan-msg">Plan message</p> 
     <div class="completed-button"> 
       <a href="#popup01" class="open-popup">Did it</a> 
     </div> 
</div> 

jQueryの機能1(HTMLの変更):

jQuery('a.open-popup').click(function(event){ 
var $parent = jQuery(this).parent(); 

    event.preventDefault(); 
    $parent.siblings('.plan-msg').remove(); 
    $parent.removeClass('completed-button') 
       .addClass('add-inv-button ') 
       .html('Add to Plan'); 

}); 

jQueryの機能2(オープンsimplelightbox):

$(function(){ 
    jQuery("a.open-popup").click(function(event) { 
      event.preventDefault(); 
      jQuery(this).simpleLightbox({ closeLink:'a.close' }); 
    }); 
}) 

感謝。あなたが最初のイベントのハンドラ内にあるとき

答えて

0
jQuery("a.open-popup").simpleLightbox({ closeLink:'a.close' }); 

です。それは次のようになります。

jQuery("a.open-popup").click(function(evt) { 
    evt.preventDefault(); 
    jQuery(this).simpleLightbox({ closeLink:'a.close' }); 
}); 

この意志すでに正しかったあなたの他のハンドラと一緒に作品。


OK編集、次のように動作しますあなたは、コードのsimpleLightbox前に、このブロックのコードが含まれている場合を実行します:

$(function() { 
    jQuery("a.open-popup").simpleLightbox({ 
     closeLink: 'a.close' 
    }); 

    jQuery('a.open-popup').click(function(event) { 
     var $parent = jQuery(this).parent(); 

     event.preventDefault(); 
     $parent.siblings('.plan-msg').remove(); 
     $parent.removeClass('completed-button') 
      .addClass('add-inv-button') 
      .html('Add to Plan'); 

    }); 
}); 

私が投稿していますこれの実例はjsFiddle http://jsfiddle.net/fZPjg/です。

注:元の投稿と一致するように$(function() {...})表記を使用しましたが、代わりに$(document).ready(function() { ... })を使用することをおすすめします。現在、2つのフォームは同じように機能します。

+0

これは機能していないようです。 a.open-popupをクリックすると、ブラウザはdiv#popup01を開かない。代わりに、www.mydomain.com/#popup01に行き、画面は空白になります。 – JMan

+0

リンクをクリックしたときのデフォルトの動作であるため、ページがナビゲートしています。上記の編集を行って、ナビゲーションが起こらないようにします。それでも問題が解決しない場合は、使用している 'simpleLightbox'プラグインのドキュメントへのリンクを投稿してください。 – Lee

+0

上記のコードを更新して、両方のjQuery関数のevent.preventDefaultを追加しました。しかし、今私は元の問題に戻ります。 2つのイベントのうち1つのみがトリガされますが、両方はトリガされませんsimpleLightboxコードへのリンクは次のとおりです。http://bit.ly/fp7FjY – JMan

0

カスタムトリガーを起動するために.triggerを使用することができ、ここであなたが.click()が欠落しているDEMO

関連する問題