2016-06-18 2 views
0

был так долго искал решение моей проблемы. во всех сообщениях они накладывают привязку даже к элементу с .on(), но это не то, что мне нужно. Вот краткий пример:Доступ к новому сгенерированному контенту в jQuery

<div id="myElement"> 
    <ul id="myUl"> 
     <li>content list 1</li> 
     <li>content list 2</li> 
    </ul> 
</div> 

после Ajax вызова, я заменить содержимое MyElement с помощью:

var div = $("#myElement"); 
div.replaceWith('<div id="myElement"> 
    <ul id="myUl"> 
     <li>new content list 1</li> 
     <li>new content list 2</li> 
    </ul> 
</div>'); 

Теперь, если я хочу, чтобы получить доступ к неупорядоченный список, чтобы добавить, например, имя класса: div.find("ul").addClass("myClass"); не работает:/любая идея, как это решить?

Большое спасибо за вашу помощь С уважением

+0

код, как показано не будет работать, даже сделать замену, потому что вы пропускаете '' # в '$ (" # myElement ")' и ваша строка '.replaceWith()' не является допустимым строковым литералом из-за разрывов строк. Итак, как мы узнаем проблему с более поздним обнаружением 'ul' не из-за этих проблем или чего-то еще не отображаемого? – nnnnnn

+0

Вы только что заменили 'div' чем-то другим, он ушел, навсегда! – adeneo

+0

спасибо за быстрый ответ. извините, я исправил свой первоначальный код. и это не мой исходный код, я просто написал быстрый пример :) – Websphere

ответ

1

Это работает для меня ...

  • добавил #, чтобы получить элемент с помощью ID
  • используется идентификатор снова после замены
  • сбежал от новых линий
  • изменено className

Примечание вы должны сделать замену в успехе Ajax

var div = $("#myElement"); 
 
div.replaceWith('<div id="myElement">\ 
 
    <ul id="myUl">\ 
 
     <li>new content list 1</li>\ 
 
     <li>new content list 2</li>\ 
 
    </ul>\ 
 
</div>'); 
 
$("#myElement").find("ul").addClass("myClass"); 
 
console.log($("#myElement").html())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="myElement"> 
 
    <ul id="myUl"> 
 
     <li>content list 1</li> 
 
     <li>content list 2</li> 
 
    </ul> 
 
</div>

+0

Вы рок человек :) решение должно было просто использовать тот же ID снова :)) Сбегать от новых линий не нужно – Websphere

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