2012-07-01 18 views
2

我有這樣的代碼在我的PHP文件中顯示的登錄和註冊內容:如何追加HTML只有div在jQuery中爲空?

<?php // LOGIN PART ?> 
<div class="login-part"></div> 

<?php // REGISTRATION PART ?> 
<div class="registration-part"></div> 

而這在我的js文件:

$(document).ready(function() { 
      // FOR REGISTRATION 
      $('span.logreg.reg').click(function() { 

       $('div.registration-part').append('<p>Registration</p>'); 
      }); 

      // FOR LOGIN 
      $('span.logreg.log').click(function() { 

       // insert html 
       $('div.login-part').append('<p>Login</p>'); 
      }); 
     }); 

現在,每次我點擊一個跨度它顯示了文本登錄或註冊,根據哪個跨度被點擊。

那好,但是我需要只添加一次,所以當用戶點擊更多次跨度時,它將不會添加更多文本。 ()或空()不是一個選項,據我所知,因爲我需要輸入框內的信息(以後會有輸入框用於插入用戶信息)留在那裏,不會被刪除if用戶再次意外地點擊跨度。

但是,它可以刪除div內的html,如果他點擊另一個跨度。例如。如果span.log處於活動狀態,點擊span.log後沒有任何反應,但是如果他點擊span.reg,div.login-part中的html將被移除並且會出現註冊文本。

如何做這樣的事情?

回答

2

嘗試API:.one請:(讀你的問題,似乎你只需要使用.one一次追加HTML一樣login會解決這個問題)

附加的處理程序爲元素的事件。該處理程序每​​個元素最多執行一次 。

的API鏈接:http://api.jquery.com/one/

這樣追加將根據需要只一次,你會不會有一個顯示多次重複的HTML。

希望這會有所幫助,請讓我再知道如果我錯過了什麼,

進一步位DIFF演示:http://jsfiddle.net/avSDa/9/使用它永遠適合你.is(:empty)

代碼這樣

$('span.logreg.log').one('click', function() { 

       // insert html 
       $('div.registration-part').append('<p>Login</p>'); 
      }); 
+0

嗯,謝謝,我會嘗試,但我擔心如果我在登錄點擊,然後註冊,然後再回到登錄會發生什麼情況。 – johnnyb3000

+0

@ johnnyb3000你會在註冊時添加'one'事件,我會盡快給你演示一下':)'告訴我我會幫你解決的。 –

+0

是的,它正在工作,但當我點擊登錄,然後登錄登錄時,它出錯了。當我在註冊時,我需要重置登錄的one()處理程序,所以當我返回(單擊)登錄時,它執行該函數,就好像它是第一次一樣。如何使這種黑客? – johnnyb3000