2012-07-06 54 views
0

我有一個名爲taskButtonClick()函數:是否可以訪問其他函數中的克隆?

  1. 設置變量形式的克隆。
  2. 將變量formParent設置爲最外面的div。
  3. 刪除父母的div和它的元素。
  4. 並用表格替換那些被移除的元素。

    function taskButtonClick() { 
    $(".task-btn").click(function(){ 
        // Setting form to the clone I want to acces in .on() 
        var form = $(this).closest('#form-to-date').clone(true); 
        var formParent = $(this).closest('#date-container'); 
        $(this).closest('#form-to-date').remove(); 
         $(formParent).html('\ 
          <form>\ 
           <fieldset>\ 
           <legend>Task<button class="btn task-btn" id="exit- button"><img src="http://localhost/ia/assets/img/remove.png"></button></legend>\ 
           <input type="text" class="span12 input-xlarge" id="input01">\ 
           <div class="control-group">\ 
            <div class="controls">\ 
            </div>\ 
           </div>\ 
           <div class="form-actions">\ 
            <button class="btn btn-primary span12" type="submit">Save changes</button>\ 
           </div>\ 
           </fieldset>\ 
          </form>\ 
          '); 
    }); 
    } 
    

有與我創建了一個。對()函數和附加一個單擊處理形式加入的退出按鈕。我試圖找出一個辦法從。對函數內訪問變量的形式(克隆),並替換以前的內容形式:

$("#date-container").on("click", "#exit-button", function(event){ 
alert("Exit Button Works."); 
event.preventDefault(); 
    // Here's kind of what I'm going for 
$(form).appendTo(formParent); 
}); 

我不是很熟悉的jQuery,請讓我知道如果我能以某種方式更好地澄清。

Edit: Here's where I'm calling the funcitons: 

$('document').ready(function(){ 
    setAjax(); 
    initialize(); 
    setDates(); 
    setButton(); 
    setActiveNav(); 
    taskButtonClick(); 
    removeButtonClicked(); 
}); 
+0

爲什麼在函數內部有.task-btn click事件? – 2012-07-06 14:08:30

+0

@MikeGB可能是因爲我做錯了什麼。我一直在寫jQuery的方法是創建'$(document).ready(function(){})',並在這些括號之間調用所有的函數。 – MikeTheCoder 2012-07-06 14:12:44

+0

您的方法可能會工作,但不是必需的。點擊時會執行該事件,您不必調用該函數來觸發事件。它應該仍然在$(document).ready(function(){})中。 – 2012-07-06 14:14:56

回答

1

嘗試聲明一個全局變量。

$(document).ready(function(){ 
     //Notice variable is outside of the event function. It can be accessed by other functions and events. 
     var formParent = null; 

     $(".task-btn").click(function(){ 
    // Setting form to the clone I want to acces in .on() 
    var form = $(this).closest('#form-to-date').clone(true); 
    formParent = $(this).closest('#date-container'); 
    $(this).closest('#form-to-date').remove(); 
     $(formParent).html('\ 
      <form>\ 
       <fieldset>\ 
       <legend>Task<button class="btn task-btn" id="exit- button"><img src="http://localhost/ia/assets/img/remove.png"></button></legend>\ 
       <input type="text" class="span12 input-xlarge" id="input01">\ 
       <div class="control-group">\ 
        <div class="controls">\ 
        </div>\ 
       </div>\ 
       <div class="form-actions">\ 
        <button class="btn btn-primary span12" type="submit">Save changes</button>\ 
       </div>\ 
       </fieldset>\ 
      </form>\ 
      '); 
    }); 
}); 
+0

我最初沒有嘗試這種方法的唯一原因是因爲我聽說使用全局並不是一個好主意。這是例外嗎? – MikeTheCoder 2012-07-06 14:26:35

+0

唯一的區別是數據仍然可用於應用程序。一旦進程結束,局部變量(在一個函數內)將被清除。 全局變量不是「壞」,他們只是徘徊。儘管您希望在您的應用程序中全局訪問變量,但您仍然希望這樣做。 – 2012-07-06 14:29:36

0

如果要使用克隆變量,請使用全局變量聲明。

相關問題