2012-03-02 12 views
0

最近問題が発生しましたが、ここでも同様の質問が出ていますが、提供された回答はどれも私にとって問題はありません。2回クリックする必要のあるJQueryのクリック機能

私はjQueryのクリック機能と同じリンク上の 'onclick'機能を持っています(隠れたdivを表示して、ウィンドウをポップアップさせます。現時点でリンクがクリックされると、ポップアップは正常に動作しますが、非表示のdivを表示するには2回目のクリックが必要です。ポップアップは2回目のクリックで再び表示されます。

私は、スクリプトをページの下部に移動して(まったく動作しませんでした)、またonclickイベントを完全に削除するなど、いくつかのことを試しましたが、 '表示'の側面には常に2クリック

どのポインタも大変ありがとうございます。私のコードは以下の通りです。

<script language="javascript"> 
jQuery(document).ready(function() { 
$(".show").click(function(){ 
var left = $(this).next('span').css('left'); 
if (left == '3px') { 
$(this).next('span').animate({left:'148px'}, 1000); 
} else { 
$(this).next('span').animate({left:'3px'}, 1000); 
} 
return false; 
}); 
}); 
</script> 

<script type="text/javascript"> 
function showPopup(url) { 
newwindow=window.open(url,'name','height=190,width=520,top=200,left=300,resizable'); 
if (window.focus) {this.window.focus()} 
} 
</script> 

<!--- In Page ---> 
<div class="coupon"><a href="/relevantpage.html" onclick="showPopup(this.href);return(false);" class="show"></a><span class="code">ABC1</span></div> 
+0

私は 'onclick ='とjQuery 'click'ハンドラを使用しないでください...あなたは予期しない結果を得るかもしれません(あなたと今のように)... – ManseUK

+0

divを表示できない理由はありますか?あなたの質問を完全に誤解していますか?または、「ポップアップポップアップを2回作成しない方法」に関する質問です。 –

+1

'$(this).next( 'span').css( 'left')'実際に=== "3px"をクリックすると、最初にクリックしたとき、そうでなければ最初のクリックは3pxに設定してください(たとえば、2pxで3pxに設定している場合はこれに気付かないかもしれません)。その後、次のクリックで実際に148pxに設定されます(今度は3pxに設定されています)。 – Niklas

答えて

1

それはそうではないかもしれないと私には思えますクリックハンドラーと関係がありますが、最初のクリックではleft'3px'と等しくなくなりますが、それ以外のもの(おそらく'auto'?)になります。しかし、それは同じ位置にあるので、アニメーションは見えません。次回は、アニメーションがいつ'148px'になるかがわかります。アニメーションの後でクラスを切り替えると、それがきれいになるかもしれません。

+0

ありがとうLinus - あなたは本当に間違っていました。 – Lee

1

私はonclickイベントを削除したいとjQuery click function内のすべてのものを行います。

私は両方のイベントを使っても同じ問題がありました。だから、showPopup関数をclickイベントに移動してみてください。ここで

$(".show").click(function(){ 

    showPopup($(this).attr("href")); 

    var left = $(this).next('span').css('left'); 
     if (left == '3px') { 
     $(this).next('span').animate({left:'148px'}, 1000); 
     } else { 
     $(this).next('span').animate({left:'3px'}, 1000); 
    } 
    return false; 
}); 

あなたは、これは正しい動作であれば、チェックするためにあなたのコード(他の画素値)の例を見ることができます:

http://jsfiddle.net/tQGxZ/1/

+0

ありがとうKeith - 理想的には私はあなたが示唆し、1つの機能だけを持っているようにしたいと思います。私はあなたのコードを試してみましたが、href(同じページでポップアップではない)と 'show'を無視しているようです – Lee

+0

私はあなたの質問を理解していますが、編集。 –

+0

もう一度おめでとうKeith - 私はshowPopupの実際の機能を最後に試してみたとき、それを忘れてしまいました。オリジナルの問題はこれとは無関係でしたが、私はあなたの提案をどんなイベントでも使用するつもりです。 – Lee

関連する問題