2009-11-10 8 views
0

J'ai la fonction jQuery, que si elle va frapper la classe spécifique est l'envelopper avec certains divs oter.Problème avec html unique() jQuery

(document).ready(function(){ 
    var Text = $('.bd_box_cont').html(); 
    $('.bd_box_cont').html(" 
     <div class='bd_box_tl'><div class='bd_box_rt'>" + Text +"</div></div> 

    "); 
)} 

seul problème est que j'ai plus d'un conteneur sur mon site, et il met ce même html à chacun d'entre eux.

Comment puis-je retourner var Text pour un conteneur spécifique?

Merci pour votre aide à l'avance

Répondre

1

vous devez accorder plus d'attention aux sélecteurs de jquery -.. http://docs.jquery.com/Selectors Il y a beaucoup de façons d'obtenir votre objet basé sur un filtre

$('.bd_box_cont:first').html 
    ("  <div class='bd_box_tl'><div class='bd_box_rt'>" + Text +"</div></div> 
"); 

par exemple obtient votre premier conteneur

1

Vous utilisez les fonctions de classe de jquery (donc chaque div avec la bd_box_cont classe obtient que le HTML. Lorsque vous voulez un seul div avoir que html, il suffit d'utiliser ids (#bd_box_cont) .html ... reste votre code

+0

mais la page ne sera pas valide avec w3c – Dom

+0

vrai, mais c'est becau Vous ne pouvez avoir qu'un seul div avec un ID spécifié. Sinon, vous devez utiliser la méthode décrite b (momentanément ci-dessous de Svetlozar Angelov). Ici, vous le définissez avec la méthode de la classe seulement que vous définissez que vous voulez seulement mettre le html dans la première occurrence de cette classe – Bloeper

1

Vous pouvez le faire plus facilement en utilisant .wrapInner():

$(document).ready(function(){ 
    $('.bd_box_cont').wrapInner("<div class='bd_box_tl'><div class='bd_box_rt'></div></div>'); 
}); 
0

Comme ladite utilisation wrapInner() @ Greg. Pour référence ultérieure, si vous voulez faire quelque chose à chaque élément d'un élément dans lequel l'une des fonctions natives ne suffira pas, utilisez each():

$('.bd_box_cont').each(function() { 
    this_element = $(this); 
}); 
0

vous pouvez aussi utiliser quelque chose comme ça (disons que vous voulez changer à-dire second récipient):

var container = $('.bd_box_cont').get(1); 
var Text = $(container).html(); 
$(container).html(" 
    <div class='bd_box_tl'><div class='bd_box_rt'>" + Text +"</div></div> 
"); 

une autre option qui fait la même:

var container = $('.bd_box_cont:eq(1)'); 
var Text = container.html(); 
container.html(" 
    <div class='bd_box_tl'><div class='bd_box_rt'>" + Text +"</div></div> 
");