2010-07-23 9 views
2

Je voulais recharger un élément à chaque fois qu'il y a un événement click sur un élément de formulaire. quelqu'un peut-il m'aider avec la syntaxe jquery? quelque chose commecomment rafraîchir un 'div' chaque fois que l'on clique sur un élément de la page - jquery

function addClickHandlers() { $.publish('refreshDiv'); }

où le reloadTopic de div est réglé sur refreshDiv

grâce

+0

qu'est-ce que vous comprenez par recharger? De nouvelles données html devraient-elles être insérées? Une mise en page doit-elle être supprimée? ... – Nealv

Répondre

1

up Cliquez bulle d'événements, de sorte que vous pouvez simplement définir l'événement sur l'élément de forme:

$('#myForm').click(function() { 
    $.publish('refreshDiv'); 
}); 

Vous pouvez également utiliser .delegate() pour attraper seulement les clics de certains éléments sous la forme:

$('#myForm').delegate("input, select, textarea", "click", function() { 
    $.publish('refreshDiv'); 
}); 
+0

Et s'il existe de nombreuses formes qui contiennent cette div spécifique et je veux qu'il se recharge chaque fois que quelque chose est cliqué dans l'un des formulaires? cela signifiera bien sûr que j'ai un fichier qui est inclus dans toutes ces pages et que ce script va dans ce fichier – abs

+0

Je ne vois pas de méthode 'publish' dans jQuery, c'est un plugin ou quoi? – Sarfraz

+0

@sAc: Je suppose que c'est, il n'y a pas vraiment assez de détails dans la question pour dire le contraire. –

0

Ajoutez un gestionnaire à chaque élément.

$('*').click(function() { 
    $.publish('refreshDiv'); 
    return false; // to stop it from bubbling as we already handled it here. 
}); 
+1

en utilisant le sélecteur universel '*' en mauvais karma et l'esprit de John Resig pourrait venir et obtenir vous si vous le faites! – jAndy

+0

Il est également très inefficace d'appliquer des gestionnaires de clic à * chaque * élément du DOM. –

0

Eh bien, je peux interpréter votre texte de deux façons:

1) execute $.publish sur tout élément qui est un enfant d'un élément de forme

$('form').children().click(function(){ 
    $.publish('refreshDiv'); 
}); 

2) exécutent $.publish sur tous les form elements (comme checkboxes, radio buttons, etc.)

$('form').find('input').click(function(){ 
    $.publish('refreshDiv'); 
}); 

Comme Andy E. a suggéré, il a une meilleure performance à delegate l'événement click, donc moins event handlers sont liés.

3)

$('form').delegate('input', 'click', function(){ 
    $.publish('refreshDiv'); 
}); 
+0

Vous pouvez utiliser * delegate() * pour un '2)' plus efficace. –

0

Je n'ai pas idée de publier et je ne ai jamais vu ce genre de code jquery mais si tu veux recharger la page entière alors u peut faire suivre chose

<button id="PageRefresh">Refresh a Page in jQuery</button> 

<script type="text/javascript"> 

    $('#PageRefresh').click(function() { 

       location.reload(); 

    }); 

</script> 

et si vous voulez recharger div particulier alors je pense que vous devriez utiliser ajax dans jquery et recharger le html dans div.

$.post("/page", frm.serialize(), function(data) { 
        $("#ReminderProjectCount").html(data); 
      });