2009-08-28 11 views
1

J'ai une boîte de dialogue JQuery qui est réglé surCentrer un dialogue JQuery Boîte

position: 'center' 

Maintenant, je lance une requête de base de données et retourner une longue liste de dossiers, et chaque enregistrement a un bouton « modifier ». Si je fais défiler la page et clique sur le bouton d'édition de l'enregistrement jquery ouvre ma boîte de dialogue et centre la boîte de dialogue en fonction de la position de défilement, mais elle remet également la page en haut, donc le dialogue n'est plus centré.

Mes questions sont,

  1. Puis-je arrêter Jquery de réinitialiser ma position de défilement lorsque la boîte de dialogue ouvre? Comment régler la position au centre sans utiliser le mot-clé 'center'?

+0

Est-ce un signe # apparaît à la fin de l'URI dans la barre d'adresse lorsque cela se produit? –

+0

Oui c'est le cas, je n'ai pas remarqué ça avant ... des idées? –

+0

Comme l'a dit reposlessdesign, vous utilisez un lien, pas un bouton, et vous devez retourner false. –

Répondre

4

Vous devez utiliser un plugin jQuery dont vous ne nous informez pas, car "center" n'est pas une valeur valide pour la propriété "position". Cependant, je suppose que vous avez configuré votre bouton d'édition comme un lien avec sa valeur href définie sur "#". C'est ce qui provoque le saut. Pour éviter cela, return false au sein de votre gestionnaire d'événements, cliquez sur ce bouton:

$('a.edit').click(function() { 
    // logic goes here 
    return false; 
}); 
+0

centre est valide http://jqueryui.com/demos/dialog/#option-position –

2

Tony, votre « bouton » est en fait un lien avec href sur « # » et un gestionnaire onclick qui fait le travail réel.

Le navigateur interprète cela comme "aller à une ancre inexistante" et va en haut de la page.

Restlessdesign est correct si vous utilisez des événements jQuery. Si vous définissez votre gestionnaire onclick dans le balisage, faire quelque chose comme:

<a href="#" onclick="doSomething();return false();" ... 
+0

cela n'a pas fonctionné pour moi, je devais mettre le retour à l'avant. –

+0

Tout ce qui suit le retour ne sera pas exécuté. –

1

C'est ce qui a fonctionné pour moi.

Dans ma fonction,

function myedit() 
{ 
.... 
return false; 
} 

avec le lien,

<a href='#' onclick='return myedit();' >edit</a> 
0

Je sais que c'est un ancien poste, mais je suis tombé sur ce problème où ma boîte de dialogue n'a pas été centralisant, donc Je pensais que je posterais pour quelqu'un d'autre qui pourrait rencontrer cela. Dans ma page j'utilise aussi le plugin jQuery Dimensions.

Si j'ai chargé le script dimensions après le script jQuery UI, le positionnement de la boîte de dialogue serait rompu. Chargé avant le jQuery UI et la boîte de dialogue a fonctionné comme prévu.

2

Vous pouvez utiliser la méthode objet événement et preventDefault() pour empêcher la page de sauter vers le haut:

$('a.edit').click(function (event) { 
    event.preventDefault(); 
    // logic goes here 
}); 
0

Moi aussi, je suis tombé sur cette année plus tard. J'espère juste que cela aidera quelqu'un d'autre à la recherche d'une solution.

source:

http://jqueryui.com/position/#default

$("#result").position({ 
    of: "#wrapper", 
    my: "center middle", 
    at: "center middle",  
    collision: "fit flip" 
})//$("#result").position({ 
Questions connexes