配列からidを持つ要素にクラスを追加する

これらの値のいずれかがh2のIDと一致する場合、クッキーからの値を含む配列があります。クラステストを追加したいのですが。これは私が試みた最新のルートです。ありがとう

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

フルコード:

<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
何が起こっている/起こっていないの?
追加された 著者 Greg B,
これはうまくいくように見えます。 htmlを投稿できますか?また、あなたの "arr"配列はどのように見えますか?
追加された 著者 Keith.Abramo,
@ Keith.Abramoより良いアイデアを与えるのに役立つフルコードを追加しました。 "arr"はコンマで区切られた文字列です。
追加された 著者 Chuck,
@GregB配列の値と一致するIDを持つh2に "testing"クラスを追加できません。
追加された 著者 Chuck,

3 答え

間違ったがあり、IDを使用する場合は h2 は必要ありません。あなたはこれを求めている:

jQuery.each(arr, function(index, value) {
    $("#" + value).addClass("testing");
});
4
追加された
はい、idはユニークでなければなりません!
追加された 著者 Benoît,
@Exelianは解決策の一部になるかもしれませんが、変更を加えてもh2の配列とIDの値に基づいてh2にクラスを追加できません。元の質問に全面的なコードを追加しました。
追加された 著者 Chuck,
私は別の問題を修正した後、実際に働いた@Exelianの感謝
追加された 著者 Chuck,

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

コードは次のようになります

jQuery.each(arr, function(index, value) {
    $("h2#" + value).addClass("testing");
});
1
追加された
jQuery.each(arr, function(index, value) {
    $("h2#" + value).addClass("testing");
});

それはあなたがそこにいけない鋭い文字の前に点を持っていたように見える

1
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript