Autor Zpráva
Melvil
Profil *
Zdravím,

chtěl bych poprosit o radu, mám web, kde načítám přes jquery/ajax výpis článků:
function loadPosts() {
    $('.filter_data');
    var category = get_filter('category');
    var type = get_filter('type');
    var language = get_filter('language');
    $.ajax({
        url: "/api/post-list.php",
        method: "POST",
        dataType: "html",        
        data: {
            category: category,
            type: type,
            language: language
        },
        success: function(data) {
            $("#post-content").html(data);
        }
    });
}

Zároveň každý článek má tlačítko, kde si uživatel může článek uložit mezi oblíbené, toto je také řešeno jquery/ajaxem:
$(function() {
    $('.save-article').click(function() {
      post_id = $(this).data("id");
      $.ajax({
        type: 'POST',
        url: '/api/save-to-favourite.php',
        data: 'post_id='+post_id,
        success: function(response) {
            var jsonData = JSON.parse(response);
            console.log(response);
            $('#post-'+post_id+' .save-article i').attr('class', jsonData.class);
            $('#post-'+post_id+' .save-article h6').text(jsonData.count);
            $('#post-'+post_id+' .save-article span').attr('data-balloon', jsonData.msg)
        },
        cache:false
      });
    });
  });  

Ovšem zde nastává problém, pokud články na web načtu přímo (bez ajaxu), funkce na ukládání funguje bez problémů, ovšem ve chvilku, kdy jsou tyto články načteny přes ajax, funkce na ukládání nefunguje. Jak to lze ideálně řešit? Zjistil jsem, že celou část se save-article mohu vložit do success: function(data) {}, ovšem to mi nepřijde jako ideální řešení. Dá se to řešit i jinak, nějak "elegantněji"?

Díky moc!
Kajman
Profil
Zkuste pro nějaký nadřazený element, který tam při inizializaci již je, nastavit událost se selektorem i na ta budoucí tlačítka.
api.jquery.com/on/#on-events-selector-data-handler
Něco jako

$('body').on('click','.save-article',function(){var post_id=...});
_Taps
Profil *
Vykonání JS načteného AJAXem

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0