2015-12-10 7 views
0

манипулировать HTML, прежде чем добавить в DOM

$(document).ready(function(){ 
 
    var x = '<div><span></span><div id="container"><span>one</span><span class="target"></span></div></div>'; 
 
    console.log($(x).find('#container').get(0)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Я могу получить блок контейнера, но как удалить .target span?

+0

их нет необходимости удалять элемент после создания html. Просто создайте те html, которые вы хотите добавить. –

ответ

0

Попробуйте следующее:

$(x).find(".target").remove(); 
+0

это не работает :( – Jennifer

0

Вы можете попробовать это

$ (х) .find ("span.target");

3

Вы хотите удалить весь элемент, если class соответствует .target? Попробуйте это:

$(document).ready(function(){ 
    var x = $('<div><span></span><div id="container"><span>one</span><span class="target"></span></div></div>'); 
    x.find('.target').get(0).remove(); 
    console.log(x.html()); 
}); 

Вот fiddle.


Редактировать

As x.html() срывает корневого элемента (т.е. <div></div>), вот решение, если вы хотите, чтобы получить полный HTML строку.

$(document).ready(function(){ 
    var x = $('<div><span></span><div id="container"><span>one</span><span class="target"></span></div></div>'); 
    x.find('.target').get(0).remove(); 
    x = x.wrap('<div>').parent().html(); 
    console.log(x); 
}); 

Обновлено fiddle.


Edit 2

В том случае, когда есть более одного .target, скажем, например, следующую строку:

<div><span></span><div id="container"><span>one</span><span class="target"></span><span class="target"></span><i class="target"></i></div></div>

Вы можете рассмотреть вопрос о снятии get(0).

$(document).ready(function(){ 
    var x = $('<div><span></span><div id="container"><span>one</span><span class="target"></span><span class="target"></span><i class="target"></i></div></div>'); 
    x.find('.target').remove(); 
    x = x.wrap('<div>').parent().html(); 
    console.log(x); 
}); 

Обновлено fiddle.

+0

Что делать, если у меня есть более 1 целевого класса? Get (0) не работает. – Jennifer

+0

@ Дженифер обновила скрипку на примере, посмотри! Удаление 'get (0)' в этом контексте приведет к удалению всех элементов с помощью '.target'. –

0

См. Ниже.

FYI - нет пядь внутри элемента с классом цели ... так что делать '.TARGET пролет' своего рода не имеет смысла

var x = '<div><span></span><div id="container"><span>one</span><span class="target"></span></div></div>'; 

var elem = $(x).find("#container").parent(); 
elem.find('.target').remove(); 
+0

Зачем нужен родительский() в этом случае? – Jennifer

+0

u не но .... пытался неграмотно, как вы получите начало ... поскольку селектор, который вы указали, не существует, так думал, что он, вероятно, поможет ... по крайней мере, так, как вы в корне. вы можете сделать селектор на первом div. – Seabizkit

0

Try:

var x = '<div><span></span><div id="container"><span>one</span><span class="target"></span></div></div>'; 

var elem = $(x).find("#container").parent(); 
elem.find('.target').remove(); 
var div = $('<div>').append(elem).html(); 
console.log(div); 

http://jsfiddle.net/8dh3bze7/

0

Это должно работать:

$(document).ready(function() { 
    var x = '<div><span></span><div id="container"><span>one</span><span id="target">ssss</span></div></div>'; 
    var y = $(x).find("#target").remove().text(); 
    //$(x).find(".target").remove(); 

    $('#new').append("<p>Test</p>" + y); 
}); 
+0

это не работает с id – Jennifer

+0

это работает для меня ..... попробуйте еще раз с вышеуказанным кодом ... – Dayan

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