2011-10-19 23 views
2

jQueryのaddClassとremoveClassをフォーム選択環境で動作させようとしていますが、ほとんど成功しません。jQuery addClassとremoveClass onchangeの問題

私は親divのクラスを修正したいのですが、関数内でIDを渡そうとしましたが、すべての試みは無駄でした。どんな方向性と支援も大いに評価されるだろう。

<div id="MaxAge" class="SearchFormStyle"> 
       <select name="maxage" onchange="addClass(MaxAge);"> 
        <option value="0">Age</option> 
        <option value="1" >1 Year Old</option> 
        <option value="2" >2 Years Old</option> 
       </select> 
        <span class="ThisValue"> 
         <a href="#" onclick="RemoveClass(MaxAge)">VALUE ENTERED HERE</a> 
        </span> 
       </div> 

<script> 
    function addClass (id) { 
     div = "#" + id; 
     $(div).addClass("InputSet"); 
    } 
    function RemoveClass (id) { 
     div = "#" + id; 
     $(div).removeClass("InputSet"); 
    } 
</script> 
+0

私はかなり理解していない、所望の効果が正確に何ですか? – Kyle

+0

効果の例:http://www.autotrader.co.uk/ 車の検索では、最大価格を選択して効果を確認します。 – razzezz

答えて

3

addClass(MaxAge)addClassに変数MaxAge値ではなく、文字列'MaxAge'を渡します。

以外にも、あなたは本当に代わりに、インラインのイベントハンドラのイベントハンドラをバインドするためにjQueryを使用する必要があります。

$("select[name='maxage']").change(function() { 
    addClass('MaxAge'); 
}); 

$('.ThisValue a').click(function(event) { 
    RemoveClass('MaxAge'); 
    event.preventDefault(); 
}); 

イベントハンドラの詳細については、私はarticles at quirksmode.orgを読むことをお勧めします。


addClassRemoveClassdiv変数はグローバルているような他の問題もあります。変数を宣言するときは、varを忘れないでください。また、関数の名前は一貫していませんaddRemove

MDN JavaScript Guideは、JavaScriptの基礎を学ぶのに非常に適しています。

0

あなたはほとんど正しい方法でやっています。ここで私は何をしますか(あなたのためのコメントあり)

// onchange event of the selectbox with id = maxage 
$("#maxage").change(function() { 
    $("#MaxAge").addClass("InputSet"); 
}); 

// the click event for the a element within span with class ThisValue 
$("span.ThisValue a").click(function(e) { 
    // prevent doing default behaviour like going to another location... 
    e.preventDefault(); 
    $("#MaxAge").removeClass("InputSet"); 
}); 
+0

フォーム内には約10個の選択肢がありますので、各要素IDの関数ではなくすべての選択肢を処理できる単一の関数を持つ方が簡単です。 希望は意味がありますか? – razzezz

0

div変数をインスタンス化することは決してありません。

これを試してみてください:

var div = "#" + id; 
+0

ありがとうございますが、これは効果がありませんでした – razzezz

関連する問題