2013-03-11 89 views
0

讓我先序說我知道圖像沒有正確顯示(除非你已經加載它們),我只是不知道爲什麼imgur不想和JSFiddle一起玩。如何移動父div?

我有幾個Div(每個都有一個單獨的ID)包含一個3選項單選按鈕。我想將整個div移到相應的框中。也就是說,如果用戶點擊第一個選項,整個單選按鈕移動到高興趣DIV,如果他們點擊第三個,它將移動到#lowI,中間的按鈕應該將其移回。我可以通過爲每個單選按鈕創建一個單獨的函數來實現它,但我覺得應該可以製作3個函數,一個用於單擊是,確定和否將父div移動到適當的位置。

Here's the latest fiddle

這是我的軟弱jQuery代碼:

$('.no').on("click", function (e) { 
    $("label.no").parent().appendTo("#lowI"); 
    e.preventDefault(); 
}); 

回答

1

點擊標籤是站不住腳的。我會使用無線電改變事件。它在語義上更合適。

$(document).ready(function(){ 
    $("input:radio").change(function() { 
     var tmp = $(this).parent("div").detach(); 

     if($(this).val() == "yes"){ 
      tmp.appendTo('#highI'); 
     } else if($(this).val() == "ok"){ 
      tmp.appendTo('#nI'); 
     } else { 
      tmp.appendTo('#lowI'); 
     } 
    }); 
}); 

另請參閱fiddle。原來的小提琴沒有啓用jQuery,所以它有點混亂。不要忘記包含它,否則什麼都不會工作!

+0

完美!而且是的......我可能實際上在某個時間點有「工作」代碼,只是沒有意識到它,因爲我沒有打開jQuery。然而,這比我的任何嘗試都要簡潔得多,所以我將其標記爲正確! – aslum 2013-03-11 20:34:32

1

你的單選按鈕有CSS屬性顯示爲無。所以JQuery不會處理它們的點擊。

您需要處理在標籤的東西像點擊

$("label.no").on("click", function (e) { 
    $(this).parent().appendTo("#lowI"); 
    e.preventDefault(); 
}); 

編輯改變選擇asuming標籤具有類中沒有

+0

所以也許如果我把'class =「yes」'從輸入移動到標籤?我的目標是製作3個「功能」來移動divs,而不是爲每個選項都設置一個功能。 – aslum 2013-03-11 20:15:36

+0

是的,將類移動到標籤或更好的圖像。但是,如果將它移動到圖像中,則會更改parent()函數,因爲div不會是直接父級。 – Ateszki 2013-03-11 20:18:29

+0

但是它仍然會在radio輸入中註冊'change'事件,所以使用'label'來觸發'change',並且聽取它(而不是''click''上的'click'事件)。 – 2013-03-11 20:21:52