2016-08-17 11 views
-3

Я знаю, что это было подробно отреагировано, но, увы, мне не повезло с предыдущим кодом.Удаление дочерних элементов в Javascript

Так что я хочу удалить все элементы span в этом элементе div, когда пользователь называет кнопку.

HTML-

<div id="sequence-label" class="scrollingDiv" style="visibility: hidden;"> 
<li>H :</li> 
<span class="spanUnselected">T</span> 
<span class="spanUnselected">F</span> 
<span class="spanUnselected">G</span> 
<span class="spanUnselected">Q</span> 
<span class="spanUnselected">G</span> 
</div> 

** JS **

$('#sequence-remove-pdb').click(sequenceRemovePdb); 

function sequenceRemovePdb() { 
    document.getElementById("sequence-label").style.visibility = "hidden"; 
    workspaceSideChain(); 
    var mySeq = document.getElementById("sequence-label"); 

} 

Вещи, которые я попробовал

Пробовал удалить все элементы как дети последовательности метки

mySeq.empty(); 

Пробовал удалить классом выбранного

mySeq.remove(".spanUnselected"); 

Пробовал удалить с помощью FirstChild элементов

while (mySeq.firstChild) { 
     mySeq.removeChild(mySeq.firstChild); 
} 

пытался удалить с помощью ChildNodes также о том, сколько элементов в последовательности-метки и до сих пор ничего.

Любые идеи?

+1

вы уверены, что '#sequence -remove-pdb' существует в DOM, когда вы пытаетесь связать обратный вызов? Пожалуйста, укажите [mcve]. – zzzzBov

+1

[Не удается воспроизвести] (https://jsfiddle.net/buvg5983/) – Oriol

+0

[Почему метод jQuery или DOM, такой как getElementById, не находит элемент?] (Http://stackoverflow.com/q/14028959/ 1529630) представляется вероятным дубликатом. – Oriol

ответ

3

Проблема
Вы смешивания JQuery и ваниль Javascript таким образом, что не работает.

В частности, вы получаете элемент в ванили Javascript здесь:

вар mySeq = документ.getElementById ("последовательность-метка");

Затем вы пытаетесь удалить элементы с помощью JQuery:

mySeq.empty(); 

и

mySeq.remove(".spanUnselected"); 

Решение
Решение достаточно простое. Получить элемент в качестве объекта JQuery первого, то ваши функции будут работать:

var mySeq = jQuery("#sequence-label"); 
// Then act on it with jQuery as you see fit. 
mySeq.find('.spanUnselected').remove(); 

Кроме того, убедитесь, что ваши привязки событий происходят внутри документа: готового

jQuery(function($) { 
    $('#sequence-remove-pdb').click(function() {sequenceRemovePdb;}); 
}); 
+0

Но вопрос упоминает 'while (mySeq.firstChild) {mySeq.removeChild (mySeq.firstChild); } ', и это должно было сработать. – Oriol

+0

@Oriol - правда, я думаю, что есть несколько проблем, поэтому я отредактировал, чтобы убедиться, что привязки событий происходят, когда существует элемент –

+0

, который действительно работал. Связывание событий работало, но да, я понимаю это сейчас. Спасибо, я был очень смущен, почему предыдущие ответы не работали. –

0

Попробуйте этот код:

$('#sequence-remove-pdb').click(function(){ 
    $('span.spanUnselected').remove(); 
}); 

HTML:

<div id="sequence-label" class="scrollingDiv"> 
<li>H :</li> 
<span class="spanUnselected">T</span> 
<span class="spanUnselected">F</span> 
<span class="spanUnselected">G</span> 
<span class="spanUnselected">Q</span> 
<span class="spanUnselected">G</span> 
</div> 

Метод удаления (выражение) удаляет все совпавшие элементы из DOM. Это НЕ удаляет их из объекта jQuery, что позволяет использовать соответствующие элементы.

JSFIDDLE LINK

+0

Нет, все еще не удаляет дочерние элементы. –

+0

Проверьте эту демо-версию. https://jsfiddle.net/NIHAR_SARKAR/gm1o3xty/ –

0

я, возможно, отсутствует пункт, но полностью пустой элемент это может работать:

document.getElementById("sequence-label").innerHTML = ""; 

Он будет сливать все дети (фактически все) внутри «последовательности -label ".

+0

Я ничего, элементы диапазона все еще остаются. –

+0

, если вы используете источник просмотра в своем браузере, они все равно будут там, поскольку источник просмотра обычно показывает, как был получен код. Если вы хотите увидеть измененный дом, вам необходимо использовать инструменты разработчика браузеров. – David

+0

Ya Я использую браузер Chrome и правильно вижу исправление исходного кода. Убедился проверить это раньше. –

Смежные вопросы