2013-01-18 39 views
1

我想爲2個選擇器運行切換功能。我有一個類.rgstr和另一個類.disable這是我的選擇元素。爲什麼使用2個選擇器的點擊功能需要2次點擊?

這裏是我的代碼:

$(document).ready(function(){ 
    $('.rgstr, .disable').click(function() { 
     var clicks = $(this).data('clicks'); 

     if (!clicks) { 
      $('.loginpanel').animate({ right: "0"}, 300, function() { 
       $('.lgnreg > div').stop().animate({right:"0"},1200,'easeOutExpo'); 
      }); 
      $('.disable').css("display","block"); 
     } 
     else { 
      $('.loginpanel').animate({ right: "-300px" }, 250, 'easeInOutCirc', function() { 
       $('.lgnreg > div').stop().animate({right:"-25px"},250,'easeInOutCirc'); 
      }); 
      $('.disable').css("display","none"); 
     } 
     $(this).data("clicks", !clicks); 
    }); 
}); 

HTML:

<div class="disable"></div> 
<div class="rgstr"> 
    <a href="#">Login/Register</a > 
</div> 
<div class="loginpanel"> 
<div class="lgnreg"> 
    <div class="login"> 
     <form> 
      <input type="text" name="lgnusername" id="lgnusername" value="Username" /> 
      <input type="text" name="lgnpassword" id="lgnpassword" value="Password" /> 
      <input type="submit" name="submit" id="submit" value="Login" /> 
     </form> 
    </div> 

    </div> 
</div> 

我要的是點擊.rgstr時,.loginpanel被打開,那麼當我們點擊.disable,是關閉。現在它可以工作,但有2次點擊。第一次點擊.rgstr.loginpanel被打開,但是我必須在.disable上點擊兩次來關閉.loginpanel,並且在接下來的時間也是如此。我怎樣才能解決這個問題?

+0

你可以請包括一段HTML代碼嗎? –

+0

是的當然,我添加了HTML –

回答

1

'clicks'數據元素只有你點擊,而不是元素的元素。

所以,當你點擊.rgstr時,只有它的數據被更新,而不是.disable的。當第一次點擊.disable時,其clicksundefined,因此第一個if塊會運行(就像您第一次點擊.rgstr時一樣)。

您需要將clicks變量保存在其中兩個元素均可讀取/寫入相同值的地方。

+0

,但我已經把這個:var clicks = $(this).data('clicks'); $(this)屬於兩個選擇器。 –

+0

@ Pay4m:不,它不。 '$(this)'只是當時點擊的元素,並不是事件綁定的所有元素。 –

+0

那麼我該如何重寫我的代碼來解決這個問題?你能指導我嗎? –

相關問題