2017-09-21 129 views
0

我試圖刪除父按鈕時單擊。javascript如何從onclick中刪除父div

<div class="image"> 
    <img src="" alt="First"> 
    <button id="one" class="remove" onclick="removeThis('one');">X</button> 
</div> 

<script> 
function removeThis(_this){ 
alert("hello" + _this); 
    $(_this).parents.remove(); 
}; 
</script> 

這豈不等於工作

整個代碼:

<!DOCTYPE html> 
<html> 
<body> 

<script> 
function registerClickHandler() { 
    // Implement the click handler here for button of class 'remove' 

} 

function removeThis(_this){ 
alert("hello" + _this); 
    // $('#' + _this).parents().remove(); 
    _this.parentNode.parentNode.removeChild(_this.parentNode); 
}; 

</script> 


<div class="image"> 
    <img src="" alt="First"> 
    <button id="one" class="remove" onclick="removeThis('one');">X</button> 
</div> 
<div class="image"> 
    <img src="" alt="Second"> 
    <button id="second" class="remove" onclick="registerClickHandler()">X</button> 
</div> 

</body> 
</html> 
+0

'$()'是一個'jQuery'選擇和使用它,你必須包括'jQuery'庫......如果你注意到的東西ISN在使用javascript時不能正常工作,請務必打開瀏覽器控制檯,因爲它會顯示錯誤消息(如果有),並告訴您哪一行出現錯誤,因此瀏覽器控制檯非常有用,請使用它。 – NewToJS

回答

3

你沒有調用parents()方法

更換

$(_this).parents.remove(); 

$(_this).parents().remove(); 

或在您的情況

$(_this).parent().remove(); 

既然你不包括在你的問題jquery標籤,你可以使用下面的香草JS以及

_this.parentNode.parentNode.removeChild(_this.parentNode); 

您還需要通過此參考此方法調用以及

<button id="one" class="remove" onclick="removeThis(this);">X</button> 

基於更新的代碼,嘗試改變的方法來此

function removeThis(_this){ 
    var el = document.getElementById(_this.id); //assuming '_this' is the 'this' reference not the 'id' 
    el.parentNode.parentNode.removeChild(el.parentNode); 
}; 
+0

試過這個,謝謝你的回覆,但它仍然不起作用 – John

+0

你有沒有在html頁面中包含jquery? – gurvinder372

+0

即時消息w3school的例子,並編輯它 – John

1

更改到這一點,如果你正在使用jQuery:

$(_this).parents.remove(); 

$("#" + _this).parents().remove(); 

如果您使用的是香草JS,則更改爲以下內容:

<div class="image"> 
    <img src="" alt="First"> 
    <button id="one" class="remove" onclick="removeThis(this);">X</button> 
</div> 

function removeThis(ele) { 
    ele.parentNode.remove(); 
}; 
+0

謝謝,但沒有沒有工作 – John

+0

@John上面的代碼更新到香草JS。 –

0

你必須使用#使用的button id選擇所以它的做工精細

function removeThis(_this) { 
 
    alert("hello" + _this); 
 
    $('#' + _this).parent().remove(); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="image"> 
 
    <img src="" alt="First"> 
 
    <button id="one" class="remove" onclick="removeThis('one');">X</button> 
 
</div>

+0

感謝與Jquery解決它,但對於這個例子它必須是JS – John

+0

我不介意我需要它它是JS謝謝 – John

0
<div class="image" ID="DivParent"> 
    <img src="" alt="First"> 
    <button id="one" class="remove" onclick="removeThis();">X</button> 
</div> 
<script> 
function removeThis(this){ 
    $("#DivParent").hide(); 
}; 
</script> 
0

試試這個,在你的代碼

  1. 更換parentsparents()。請參閱JQuery DOM
  2. 如果你加載Jquery的,無論如何,然後充分利用它(如click event

    <div class="image"> 
        <img src="" alt="First"> 
        <button id="one" class="remove">X</button> 
    </div> 
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script> 
        $(document).ready(function() { 
         $("#one").click(function() { 
          alert("Test"); 
          $("#one").parent().remove(); 
         }); 
        }); 
    </script> 
    

如果你只是想只刪除以前的直接因素,這是可以做到通過使用prev()

像這樣=>$("#one").prev().remove();

FIDDLE