2014-09-12 5 views
0

у меня есть что-то похожее на это:Ajax добавляет новые данные, но ссылки не работают

$('.new-post').on('click', function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    url: '/somehting' 
    data: {my data}, 
    ...etc, 
    success: function(data) { 
     $.get('template.html', function(h) { 
     var el = $(h); 
     el.find('items').text('texts...'); 
     el.appendTo('.myElement'); 
     }); 
    } 
    }); 
}); 

Я отправляю новую должность с помощью ajax, и я хотел бы, чтобы после того, как он был сохранен на сервере, то оно добавляется к существующему списку должностей.

Он отлично работает, но если я нажимаю на ссылки, которые я Append с использованием HTML шаблона ничего, кажется, работает ...

Вероятно, я использовал неправильную стратегию, чтобы сделать это, так что здесь мне нужно немного вашей помощи ,

Я использовал $.get в методе success, чтобы получить шаблон html, в который нужно добавить новые данные для добавления. Я знаю, что $.get является асинхронным, но по какой-то причине он не работает до тех пор, пока я не обновляйте страницу ...

EDIT (HTML)

<li> 
    <h2></h2> 
    <p></p> 
    <ul class='actions'> 
    <li><a href='link to the post'></a> 
    <li><a href='#' data-modal='comment-modal'>Comment</a> 
    </ul> 
</li> 
+1

«Ничто не работает» - это ужасно неопределенная постановка задачи. Что вы ожидаете от ссылок, и что происходит вместо этого? (Например: ожидаете ли вы, что обработчик события, связанный с ссылкой, будет запущен? Если да, [этот вопрос и его ответы] (http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created -элементы) для вас.) –

+0

Я ожидаю, что ссылка перейдет на страницу ... это ссылка, но она не срабатывает. 'a href =" http://www.google.com "' это не работает. Даже если я хочу открыть модаль, это не сработает. –

+2

какие ссылки есть => разместите html, который отображается в вашем запросе PLS? – cpoDesign

ответ

0

Вы должны добавить переприсваивание в success обработчика, если вы хотите, чтобы выполнить это после вызова Ajax:

success: function(data) { 
    elem.replaceWith(data); 
    $('.actions').bind('click', /* some function needs to go here*/); 
} 

проверки следующих ссылок

[1]: http://api.jquery.com/live/ [2]: http://api.jquery.com/delegate/ [3]: http://api.jquery.com/on/ [4]: ​​http://api.jquery.com/live/

0

Я не знаю, что именно вы добавляете , но если вы добавите что-то, содержащее <a href="your url"> Text</a>, тогда ссылка должна работать. Insted если вы хотите имитировать ту ссылку, скажем, вы somethink как этот <span class="myclass">Click here</span> вы должны добавить событие JQuery:

el.find("span.myclass").click(function(){ 
    //do something 
}) 

Я поволокли Я понимаю, что вы хотите сделать.

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