Voeg klasse toe aan element dat de id uit de array heeft

Ik heb een array die waarden uit een cookie bevat, als een van die waarden overeenkomt met de ID van een h2, wil ik de klasse-testen toevoegen. Dit is de laatste route die ik heb geprobeerd. Bedankt

jQuery.each(arr, function(index, value) {
    $("h2.#" + value).addClass("testing");
});

Volledige code:

<script type="text/javascript">
$(document).ready(function(){
    var cookieName = $("body").attr("id");
    storedCookieName = $.cookie(cookieName);

    if (storedCookieName != null) {

        var cookieValues = storedCookieName;
        var arr = storedCookieName.split(',');
        alert( "the cookie values for this page are :" + arr);

        jQuery.each(arr, function(index, value) {
            $("#" + value).addClass("testing");
        });


    } else {
        var cookieValues = '';
        alert("I don't have a cookie for this page");
};

  //add id's to each drop down box trigger
$('h2.contentTrigger').attr('id', function(i, value) {
    return "dropDownTrigger" + (i+1);
});

//Hide (Collapse) the toggle containers on load
$(".toggle_content_container").hide(); 

//Switch the "Open" and "Close" state per click then slide up/down (depending on open/close state)
$("h2.contentTrigger").click(function(){
    $(this).toggleClass("active").next().slideToggle("fast");
    return false; //Prevent the browser jump to the link anchor
});


$("h2.contentTrigger").click(function(){

      //get class of clicked item to check if dropdown is active when clicked
    var triggerClass = $(this).attr("class");
      //get id of clicked dropdown
    var targetLink = $(this).attr("id");

    if ((triggerClass == 'contentTrigger noprint active') || (triggerClass == 'contentTrigger print active')) {
        cookieValues+=($(this).attr("id")+",");
        $.cookie(cookieName, cookieValues, { path: '/', expires: 10 });
        //alert("adding value" + cookieValues);    
    }else{
        cookieValues = cookieValues.replace(targetLink+",", "");
        $.cookie(cookieName, cookieValues, { path: '/', expires: 10 });    
        //alert("new value" + cookieValues);    
    };
});

});//end:$(document).ready
</script>

</head>
<body id="#SMPPageVariables.PageMetaKeywords#">
<div id="container">

<div id="content">


<!--Sample of output    
<div class="tab">
    

What Is Important To Know

    <div class="toggle_content_container noprint">
        <div class="block">
            

Info

            
Info:
  • Words
  • Words
            

Heading

            
Paragraph
Paragraph </div> </div> </div> --> </div> <div class="hidden"></div> </div> </body> </html>
1
Wat gebeurt er/gebeurt er niet?
toegevoegd de auteur Greg B, de bron
Dit ziet eruit alsof het zou moeten werken. Heb je html dat je zou kunnen posten? Ook hoe ziet jouw "arr" -array eruit?
toegevoegd de auteur Keith.Abramo, de bron
@ Keith.Abramo Volledige code toegevoegd om een ​​beter idee te geven, "arr" is door komma's gescheiden string.
toegevoegd de auteur Chuck, de bron
@GregB Ik kan de klasse "testen" niet toevoegen aan h2 met een ID die overeenkomt met de waarde van de array.
toegevoegd de auteur Chuck, de bron

3 antwoord

U hebt daar een onjuiste . en de h2 is niet nodig bij het gebruik van id's. Jij wilt dit:

jQuery.each(arr, function(index, value) {
    $("#" + value).addClass("testing");
});
4
toegevoegd
Ja, id MOET uniek zijn!
toegevoegd de auteur Benoît, de bron
@ Exelian die mogelijk deel uitmaakt van de oplossing, maar zelfs met de wijziging kan ik nog steeds geen klasse toevoegen aan h2 op basis van de waarde van array en id van h2. Ik heb de volledige paginacode toegevoegd aan de oorspronkelijke vraag.
toegevoegd de auteur Chuck, de bron
@Exelian bedankt dat het echt werkte zodra ik een ander probleem heb opgelost
toegevoegd de auteur Chuck, de bron

Remove the . from your selector; "h2#" + value instead of "h2.#" + value

zodat de code eruit ziet

jQuery.each(arr, function(index, value) {
    $("h2#" + value).addClass("testing");
});
1
toegevoegd
jQuery.each(arr, function(index, value) {
    $("h2#" + value).addClass("testing");
});

Het lijkt erop dat je een punt had voor een scherp personage dat er niet zou moeten zijn

1
toegevoegd