Po načtení snippetu ajaxem nefunguje sylování pomocí jquery

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
daliborcaja
Člen | 57
+
0
-

Po načtení snippetu ajaxem mi nefunguje sylování pomocí jquery. Mám např. nastylovaná tlačítka viz. ukázka níže, ale ne jen to. Jakým způsobem docílit toho aby se u nově načteného snippetu aplikovalo také toto stylování?

<script type="text/javascript">
$(function() {
    $('input:submit, .button').button();
});
</script>
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Zavolat po ajaxovém požadavku tento kód znovu (ještě by na to asi nějak šlo použit to live vázání, ale je to méně výkonné).

bojovyletoun
Člen | 667
+
0
-

na tohle se hodí livequery

mkoubik
Člen | 728
+
0
-

Vlož si do layoutu livequery a pak místo toho použij

<script type="text/javascript">
$(function() {
    $('input:submit, .button').live(function(){
        $(this).button();
    });
});
</script>
daliborcaja
Člen | 57
+
0
-

mkoubik napsal(a):

V kodu mas akorat live misto livequery, jinak funguje.

Mám ale další problém. Kyž jsem to použil na dialog, který používám pro flash-messages tak mi to dělá to že když se ňáký ten dialog zobrazí (je jedno jestli normalne nebo ajaxem) a já ho tlačítkem chci zavřít tak se mi místo toho oběví další stejný a pak jich je několik přes sebe a nejde se toho zbavit.

<script type="text/javascript">
$(function() {
    $('#flash').livequery(function(){
        $(this).dialog({
            modal: true,
            show: "bounce",
            hide: "explode",
            buttons: {
                Ok: function() {
                    $( this ).dialog( "close" );
                }
            }
        });
    });
});
</script>
daliborcaja
Člen | 57
+
0
-

Tak jsem to vyřešil úpravou jquery.nette.js a implementací podpory flash messages přímo do něj. Přikládám celý můj soubor:

<script type="text/javascript">
/**
 * AJAX Nette Framwork plugin for jQuery
 *
 * @copyright  Copyright (c) 2009, 2010 Jan Marek
 * @copyright  Copyright (c) 2009, 2010 David Grudl
 * @copyright  Copyright (c) 2011 Dalibor Caja
 * @license    MIT
 * @link       https://componette.org/search/?q=jquery-ajax
 */

/*
if (typeof jQuery != 'function') {
    alert('jQuery was not loaded');
}
*/

(function($) {
    $.nette = {

        success: function(payload) {
            // redirect
            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }

            // state
            if (payload.state) {
                $.nette.state = payload.state;
            }

            // snippets
            if (payload.snippets) {
                for (var i in payload.snippets) {
                    $.nette.updateSnippet(i, payload.snippets[i]);
                }
            }

            // change URL (requires HTML5)
            if (window.history && history.pushState && $.nette.href) {
                history.pushState({href: $.nette.href}, '', $.nette.href);
            }
        },

        updateSnippet: function(id, html) {
            $('#' + id).html(html);
            $.nette.createDialog();
        },

        // create animated spinner
        createSpinner: function(id) {
            return this.spinner = $('<div></div>').attr('id', id ? id : 'ajax-spinner').css({
                position: 'fixed',
                left: '50%',
                top: '50%'
            }).ajaxStart(function() {
                $(this).show();
            }).ajaxStop(function() {
                $(this).hide().css({
                    position: 'fixed',
                    left: '50%',
                    top: '50%'
                });
            }).appendTo('body').hide();
        },

        // create flash message dialog
        createDialog: function() {
            $('#flash').dialog({
                modal: true,
                show: 'bounce',
                hide: 'explode',
                buttons: {
                    Ok: function() {
                        $(this).dialog('destroy').remove();
                    }
                }
            });
        },

        // current page state
        state: null,
        href: null,

        // spinner element
        spinner: null

    };
})($);

$(function($) {
    // HTML 5 popstate event
    $(window).bind('popstate', function(event) {
        $.nette.href = null;
        $.post(event.originalEvent.state.href, $.nette.success);
    });

    $.ajaxSetup({
        success: $.nette.success,
        dataType: 'json'
    });

    $.nette.createSpinner();
    $.nette.createDialog();

    // apply AJAX unobtrusive way
    $('a.ajax').live('click', function(event) {
        event.preventDefault();
        if ($.active) return;

        $.post($.nette.href = this.href, $.nette.success);

        $.nette.spinner.css({
            position: 'absolute',
            left: event.pageX,
            top: event.pageY
        });
    });
});
</script>

Pokud by měl někdo zájem o zveřejnění kompletní podoby mojich flash zpráv tak napište a já tomu dám ňákou podobu a někde to hodím :)