Po načtení snippetu ajaxem nefunguje sylování pomocí jquery
- daliborcaja
- Člen | 57
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
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é).
- daliborcaja
- Člen | 57
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
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 :)