2011-04-29 2 views
2

Dans l'interface utilisateur jQuery Tabs, j'utilise cette fonction (grâce à SO'ers) pour modifier le CSS d'un div afin de montrer une image particulière en fonction des données -image attribut de l'onglet actif.jQuery modifier le texte dans div en utilisant l'attribut "data"

Fonction:

var img = $(ui.panel).data("image"); 
$("#headerwrapper") 
.animate({ opacity: 'toggle' }, function() { 
$(this).css("background-image", "url(" + img + ")") 
.animate({ opacity: 'toggle' }); 
}); 
} 

HTML et CSS:

html dans la structure onglets:

<div id="home" data-image="/images/water.jpg">tab content</div 

<div id="about" data-image="/images/office.jpg">tab content</div> 

    ...more tabs... 

css (water.jpg est par défaut en l'absence de données image est présent):

#headerwrapper {background: url(images/water.jpg);} 

Donc, je peux créditer correctement le photographe lorsque son image est affichée: comment changer cette fonction (voir ci-dessous) afin d'utiliser un attribut de données correspondant appelé crédit pour changer le texte de avec l'onglet actif? Et peut-on avoir deux attributs de données différents dans le HTML? Ou y a-t-il un meilleur moyen?

Fonction:

var img = $(ui.panel).data("credit"); 
$("#headerwrapper") 
.animate({ opacity: 'toggle' }, function() { 

$(this).css("background-image", "url(" + img + ")") //what goes here in order 
                //change data-credit 
                //in the div photocredit? 
.animate({ opacity: 'toggle' }); 
}); 
} 

HTML: dans la structure des onglets:

<div id="home" data-image="/images/water.jpg" data-credit="Photog1">tab content</div 

<div id="about" data-image="/images/office.jpg" data-credit="Photog2">tab content</div> 

     ...more tabs... 

Dans le bas de page du site (hors #headerwrapper):

<div id="photocredit"></div> 

Et , quel est le CSS f ou #photocredit? Tout ceci: #photocredit {}

+0

ne sera pas ce travail> '# (« # Crédit photo »). Html (img); ' – neebz

+0

Je n'appelle pas une image, mais du texte dans une autre div. – markratledge

Répondre

1

Utilisez la fonction attr pour changer l'attribut de div tag:

$(this).attr("data-credit", "Photographer..."); 
0

Voici une façon de régler le Crédit photo

Exemple Ici: http://jsfiddle.net/pxfunc/VhvvG/

jQuery modifié:

var $home = $('#home'); 

$('#headerwrapper').animate({ 
    opacity: 'toggle' 
}, function() { 
    $(this).css("background-image", "url(" + $home.data('image') + ")").animate({ 
     opacity: 'toggle' 
    }).children('#photocredit').html($home.data('credit')); // set the photo credit from data-credit attribute to the child element #photocredit 
}); 

Je suppose que l'<div id="photocredit"></div> est un élément enfant de l'élément <div id="headerwrapper"..., si ce n'est pas faire quelque chose comme

$('#headerwrapper').animate({ 
    opacity: 'toggle' 
}, function() { 
    $(this).css("background-image", "url(" + $home.data('image') + ")").animate({ 
     opacity: 'toggle' 
    }) 
}); 
$('#photocredit').html($home.data('credit')); // set the photo credit from data-credit attribute to the child element #photocredit 
+0

Merci, c'est proche, mais j'ai négligé de dire que j'ai plusieurs onglets avec des images multiples - une image pour chaque onglet - et j'ai donc modifié le code ci-dessus. Ainsi, l'ajout à la fonction doit saisir l'onglet actif, comme la fonction d'origine, et afficher le "crédit" de données pour chaque onglet actif. – markratledge

Questions connexes