2014-12-13 65 views
1

我想在AJAX PHP腳本完成時移除父div。問題是,當你的PHP腳本是jQuery無法刪除div。jQuery未能移除父div

有人知道我的代碼錯誤在哪裏,爲什麼我不能使用我提供的方法刪除想要的DIV?

這裏是代碼:

HTML:

<div id="newTask"> 
<input type="hidden" id="taskID" 1="" name="taskID" value="39"> 
<input type="text" id="taskName1" name="taskName1" value="12"> 
<span class="remove" onclick="removeDIVS(39);"></span> 
</div> 

JS:

function removeDIVS(currentID){ 

    $.ajax({ 
     url: 'scripts/removeTask.php', 
     type: 'post', 
     data: 'id='+currentID, 

     success: function(data, status) { 
     if(data == "OK") { 
      $(this).parent().remove(); 
     } 
     else{ 
        $('#TaskResult').html(data); 
     } 
     }, 
     error: function(xhr, desc, err) { 
     console.log(xhr); 
     console.log("Details: " + desc + "\nError:" + err); 
     } 
    }); // end ajax call 
    } 
+1

$(本).parent()刪除(); - $(this)不是你可能期望的span元素 – GRSEV 2014-12-13 14:07:07

+1

可能是因爲'$(this)'沒有引用你想要的div。用'$(「#newTask).remove()'替換'$(this).parent()。remove()'確認 – haxtbh 2014-12-13 14:07:14

+1

'this'指向'window'。 – 2014-12-13 14:07:14

回答

3

嘗試:

HTML:

<div id="newTask"> 
<input type="hidden" id="taskID" 1="" name="taskID" value="39"> 
<input type="text" id="taskName1" name="taskName1" value="12"> 
<span class="remove" data-myid="39"></span> 
</div> 

JS:

$(".remove").click(function(){ 
var currentID = $(this).data('myid'); 
var parenID = $(this).parent().attr('id'); 
$.ajax({ 
     url: 'scripts/removeTask.php', 
     type: 'post', 
     data: 'id='+currentID, 

     success: function(data, status) { 
     if(data == "OK") { 
      $("#"+parenID).remove(); 
     } 
     else{ 
        $('#TaskResult').html(data); 
     } 
     }, 
     error: function(xhr, desc, err) { 
     console.log(xhr); 
     console.log("Details: " + desc + "\nError:" + err); 
     } 
    }); // end ajax call 
}) 
+0

這是一個更好的答案,因爲它處理多個實例並將JavaScript從標記中移出。順便說一句,你可以只存儲'var parent = $(this).parent();',然後'parent.remove()',所以你不依賴於它有一個id(顯然在這種情況下,它是獨特的) – Rhumborl 2014-12-13 14:17:43

+0

謝謝你的回答。我嘗試了你的代碼,點擊事件並沒有觸發...... – jureispro 2014-12-13 14:17:47

+0

@jureispro你可能需要把它放在document.ready中 - 只需將所有東西包裝在'$(function(){... code ...})中; ' – Rhumborl 2014-12-13 14:18:54

1

使用

$("#newTask").remove(); 

,而不是

$(this).parent().remove(); 

因爲這裏$(this)不是你所期待的。 。

+0

它將刪除第一行od newTask元素問題是我可能有多個newTask DIV元素和你的代碼 – jureispro 2014-12-13 14:09:45

+1

如果它們是多個,他們如何都有ID,那麼它應該有類,ID不用於多個元素 – apsdehal 2014-12-13 14:13:27

+0

@jureispro ID在文檔上必須是唯一的上下文,所以如果OP使用多重複制ID,他還有其他問題來臨 – 2014-12-13 14:14:53