2010-10-01 8 views
1

Je suis en train de faire le jquery draggable il fonctionne très bien dans le premier cas, mais il ne fonctionne pas quand une nouvelle même div est créé avec jswhat est le problème réel avec mon code s'il vous plaît aidez-moi http://galtech.org/testing/drag_new.php Drag Me vieux a bien fonctionné Mais la nouvelle draggable div est créé avec un élément nouveau (ancre rouge en bas) il n'a pas la propriété draggablejquery draggable n'a pas travaillé

<script> 
    function shw() 
    { 
    $("#name").html('<div id="draggable">Drag me new</div>'); 
    } 
    $(document).ready(function() { 

    $("#draggable").draggable({ cursor: 'move', containment: '#name', opacity: 0.35 }); 
    }); 
    </script> 
</head> 
<body > 
    <div id="name" style="background:#9999FF; height:500px; width:500px;"> 
<div id="draggable">Drag me old</div> 
</div> 
<a onClick="shw();" style="background-color:#FF0000; cursor:pointer;">New element</a> 


</body> 
</html> 

Répondre

1

Vous devez réinitialiser le draggable. Faire ce qui est dans document.ready une fonction et l'appeler après avoir ajouté le nouveau draggable

0

Vous ajoutez un élément au dom qui n'était pas présent lors de son initialisation.

Si vous souhaitez utiliser une fonction sur un élément créé à l'avenir, vous pouvez utiliser la fonction live de jQuery

Source

Modifier: Depuis live ne peut pas travailler ici, il y a une plug-in je une fois que le travail ici: liveQuery

Here's the jsFiddle with livequery that work with your code

+0

Vous ne pouvez pas utiliser '.live()' comme ça; cela ne fonctionne que pour les événements qui survolent le DOM. –

+0

Jésus, j'ai lu le code trop vite. Je suis en train d'éditer! – Shikiryu

0
<script> 

function shw() { 
    $("#name").html('<div id="draggable">Drag me new</div>'); 
} 

$(document).ready(function() { 

$("#draggable").draggable({ cursor: 'move', containment: 

'# name', opacité: 0,35});

}); 

</script> 

Initialiser draggable après l'ajout de nouveaux éléments

function shw() { 
    $("#name").html('<div id="draggable">Drag me new</div>') 
.find('#draggable').draggable({ cursor: 'move', containment:'#name',opacity: 0.35}); 
} 

$(document).ready(function() { 

$("#draggable").draggable({ cursor: 'move', containment:'#name',opacity: 0.35}); 

}); 
+0

m'aider à résoudre ce problème http://stackoverflow.com/questions/3967315/jquery-draggble-has-a-problem-on-dragging – SABU