2010-03-09 2 views
2

J'ajoute actuellement une div à utiliser comme curseur par programmation, mais lorsque j'applique le curseur, tout apparaît mais je ne peux pas faire glisser la poignée ni aucun des états de survol fonctionne correctement.Ajout par programmation de curseurs d'interface utilisateur jQuery provoquant des problèmes

var container = $('<div class="container"></div>'); 
var slider_div = $('<div class="position_slider"></div>'); 

$(slider_div).slider(); 

container.append(slider_div); 
$placeholder = $("#"+player_id); 
$placeholder.append(container); 

J'ai essayé tout nombre de combinaisons d'ajouter la div curseur sans résultat, et je me demande s'il y a quelque chose que je ne sais pas que je l'ai manqué. Ajouter physiquement un <div class="position_slider"> à la page permet au curseur de fonctionner, mais ce n'est pas une option.

Toute aide serait appréciée.

+0

Votre conteneur et slider_div référencent des balises réelles dans votre page, pas des fragments HTML que vous souhaitez insérer dans la page. Est-ce ce que vous vouliez faire? Si oui, qu'est-ce que l'appendice ajoute pour vous? – Lazarus

+0

L'append fonctionne parfaitement et le curseur est construit - je peux voir toutes les petites classes d'ui sur la div et la poignée est là, vous ne pouvez pas le faire glisser. Lorsque vous cliquez dessus, le curseur ne se met pas à jour avec 'ui-active', etc. – Wil

Répondre

1

Le problème était de faire jquery.flash en modifiant le conteneur DIV après que le curseur ait été instancié. J'ai simplement changé l'ordre de construire le curseur, ajouter au conteneur, insérer le flash à construire curseur, insérer flash, append curseur. Si vous rencontrez des problèmes pour voir le curseur et tous les composants de l'interface utilisateur, mais que vous ne pouvez pas l'utiliser, supprimez simplement toutes les autres requêtes de la page, à l'exception de celles dont vous avez besoin pour accomplir le curseur. puis rajoutez-le tous en un par un jusqu'à ce que vous découvriez le gremlin.

0

Je pense que cela va éclaircir ce que cela devrait ressembler à:

var container = '<div class="container"></div>'; 
var slider_div = '<div class="position_slider"></div>'; 

$("#"+player_id).append(container); 
$(".container").append(slider_div); 
$(".position_slider").slider(); 

Je me rends compte que vous pouvez créer de nombreux curseurs par page, d'où l'accès programmatique, et que je changerais la classe références à des références d'ID et utiliser une sorte de compteur pour créer des ID incrémentiels pour les contrôles. Je vais laisser la mise en œuvre réelle comme un exercice pour vous.

+0

Oui, vous devrez excuser la méchanceté, comme je dis que je bricole beaucoup, donc tout est un peu hors de propos. Il y a aussi beaucoup plus de choses dans le conteneur, je l'ai juste supprimé pour cet exemple. Donc, vous dites que les curseurs doivent tous avoir des ID uniques pour fonctionner correctement? – Wil

+0

Je pense que nous devrions voir plus de code pour pouvoir le définir, mais j'essaie de réserver des classes pour des ornements visuels communs plutôt que de les utiliser comme références de contrôle. Pour moi, les contrôles ont des objectifs spécifiques et en tant que tels ont besoin d'identifiants spécifiques. – Lazarus

+0

Les contrôles fonctionnent tous très bien, ils sont identifiés par leur parent. C'est ce curseur qui me cause des maux de tête. Je vais prendre un exemple plus simple ensemble et le poster. – Wil

0

Pour tous ceux qui ont trouvé cette page, j'ai rencontré un problème similaire.

Ceci produit un curseur qui semble correct mais qui ne fonctionne pas.

var mySlider = $("<div/>").slider(); 
$(mySlider).clone().appendTo(SomeDiv); 

Enregistrement du nouveau curseur avec slider() résolu le problème.

var mySlider = $("<div/>").slider(); 
$(mySlider).clone().slider().appendTo(SomeDiv); 
Questions connexes