2010-05-17 7 views
0

Si le survol d'un élément injecte quelque chose dans le DOM, puis-je toujours le référencer?jQuery: si survoler un élément injecte quelque chose dans le DOM, puis-je toujours le référencer?

Ou dois-je utiliser le plugin live?

J'utilise jQuery 1.3.2

à savoir ce que je peux faire

$("#someItem").attr("src", "htt...") 

là-dessus?

J'essaie de le faire, mais je pense que ne fonctionne pas b/c c'est un nouvel élément ajouté au DOM.

+1

Qu'entendez-vous par "référence"? – Pointy

+0

Puis-je faire $ ("# quelque chose")? ou je ne suis pas capable de b/c c'était un nouvel élément ajouté au DOM. – Blankman

Répondre

1

Oui, un élément qui a été ajouté au DOM peut être sélectionné et référencé. Ou, si vous aviez déjà une référence que vous avez utilisée lorsque vous l'avez ajoutée au DOM, vous pouvez continuer à utiliser cette référence après qu'elle a été ajoutée. En utilisant cet exemple, vous pouvez voir que vous pouvez utiliser une référence actuelle à un élément nouvellement créé, ainsi que faire une nouvelle référence à celui-ci.

http://jsfiddle.net/Czuvx/

HTML:

<div id='button'>hover me</div> 

jQuery:

$('#button').hover(function() { 
    $('#newElement').remove(); 

    var $myNewElement = $('<div id="newElement">new Element</div>'); 

    $('body').append($myNewElement); 

    $myNewElement.css({color:'red'}); 
}, 
function() { 

// This function has completely different namespace 
// from the one that created and inserted #newElement 
// and I can get a reference to it just like any other element 

    var $newReferenceToElement = $('#newElement'); 

    $newReferenceToElement.css({color:'blue'}); 
}); 
+0

Que faire si vous n'avez pas de référence à ce sujet auparavant? ou c'était perdu. – Blankman

+0

Comme vous pouvez le voir à partir de la deuxième fonction de l'événement 'hover()', il crée une nouvelle référence à l'élément qui a été ajouté. 'var $ newReferenceToElement = $ ('# newElement');' – user113716

+0

@Blankman - Cela a-t-il un sens? Avez-vous d'autres problèmes? Peut-être besoin de partager du code si c'est le cas. – user113716

0

Affichage d'un peu plus de votre code serait utile, mais je pense que je reçois l'idée générale.

Si vous cherchez simplement à ajouter des événements ou quelque chose à cet élément, vous pouvez le faire avant d'ajouter l'élément.

(function($){ 
    $(function(){ 
    $("#link").hover(
     function(){ 
     var $div = $("<div class='inserted_div'></div>").bind("click",function(){ ... }); 
     $("body").append($div); 
     }), 
     function(){ 

     }); 
    }); 
})(jQuery); 

Il suffit donc de lier les événements ou les attributs au moment de la création, avant de l'ajouter.

Questions connexes