Diziden kimliği olan öğeye sınıf ekle

Bir çerezden değerler içeren bir dizim var, bu değerlerden biri h2'nin kimliğiyle eşleşiyorsa, sınıf testini eklemek istiyorum. Bu benim denediğim en son yol. Teşekkürler

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

Tam kod:

<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
Neler oluyor/olmuyor?
katma yazar Greg B, kaynak
Bu işe yarayacak gibi görünüyor. Gönderebileceğin html var mı? Ayrıca "arr" diziniz neye benziyor?
katma yazar Keith.Abramo, kaynak
@ Keith.Abramo Daha iyi bir fikir vermek için tam kod eklendi, "arr" virgülle ayrılmış dizedir.
katma yazar Chuck, kaynak
@GregB "sınama" sınıfını, dizideki değerle eşleşen bir kimlikle h2'ye ekleyemiyorum.
katma yazar Chuck, kaynak

3 cevap

Orada bir . kodunuz var ve ids kullanırken h2 gerekmeyecek. Bunu istiyorsun:

jQuery.each(arr, function(index, value) {
    $("#" + value).addClass("testing");
});
4
katma
Evet, id benzersiz olmalı!
katma yazar Benoît, kaynak
@Exelian, çözümün bir parçası olmakla kalmayıp, yine de, h2'nin dizisi ve kimliğinden gelen değere dayanarak h2'ye sınıf ekleyememe rağmen, orijinal soruya tam sayfa kodu ekledim.
katma yazar Chuck, kaynak
@Exelian Bir başka sorunu çözdüğümde gerçekten işe yaradığı için teşekkürler
katma yazar Chuck, kaynak

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

kod gibi görünüyor

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

Orada olmaması gereken keskin karakterden önce bir nokta vardı gibi görünüyor

1
katma