2011-06-18 18 views
1

私はユーザーのjqueryを使って、バックグラウンドイメージからなるdivのペアにクラスを追加/削除しようとしています。 div/imageは、隠れたラジオボックスのペアのラジオボックスとして機能することを意図しています。ラジオボタンの値を変更し、jqueryを使ってクラスを追加する

div/imageをクリックすると、スクリプトはクリックされたdivに 'selected'クラスを適用し、必要に応じて他のものから削除する必要があります。適切な隠しラジオボタンを選択します。

私の知る限りでは、以下のスクリプトはうまくいくはずですが、そうではありません。私は現在間違っています。任意のアイデアスタッカー?

SCRIPT

$("div#like").click(function() { 
    var $radios = $('input:radio[name=vote]'); 
    $("div#dislike").removeClass("selected"); 
    $("div#like").addClass("selected"); 
     $radios.filter('[value=likes]').attr('checked', true); 
}); 

$("div#dislike").click(function() { 
    var $radios = $('input:radio[name=vote]'); 
    $("div#like").removeClass("selected"); 
    $("div#dislike").addClass("selected"); 
     $radios.filter('[value=likes]').attr('checked', true); 
}); 

HTML

<form action="createComment.php" method="post"> 
<div id="like" ><input class="like" type="radio" name="vote" value="likes" /></div>&nbsp; 
<div id="dislike" ><input class="dislike" type="radio" name="vote" value="dislikes" /></div><br/> 
</form> 

[EDIT 15:07]私はこのルートを行った場合はどうすれば ?

$("div#like").click(function() { 
    var $radios = $('input:radio[name=vote]'); 
     $("div#dislike").removeClass("selected"); 
     $("div#like").addClass("selected"); 
     $radios.filter('[value=likes]').attr('checked', true); 
     $radios.filter('[value=dislikes]').attr('checked', false); 
    }); 

$("div#dislike").click(function() { 
    var $radios = $('input:radio[name=vote]'); 
     $("div#like").removeClass("selected"); 
     $("div#dislike").addClass("selected"); 
     $radios.filter('[value=dislikes]').attr('checked', true); 
     $radios.filter('[value=likes]').attr('checked', false); 
    }); 
+0

それは今あなたのために働くのか?どのボタンをチェックするように修正したので、それは私には見えるはずです。実際には動作しません - あなたはattr( "checked"、true)をそこに残すべきです。 – kinakuta

+0

jqueryドキュメントをチェックして確認してください:http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_check.2Funcheck_a_checkbox_input_or_radio_button.3F – kinakuta

+0

それは単独で機能しますが、自分のサイトに統合してもそれはまだありません。 – VikingGoat

答えて

1

属性checked="checked"をjavascriptを使用して設定しないでください。代わりに、あなたが行うことができますjqueryのを使用して

radioButton.checked = true

を使用し、ここで

$radios.filter('[value=likes]').get(0).checked = true 

は、あなたのためのちょっといい例ですhttp://jsfiddle.net/cu2y8/6/

+0

私はこのルートに行った場合はどうなりますか? (私の最新の編集を参照してください3時07分) – VikingGoat

+0

実際には、javascriptを使用してチェック属性を設定してもそれを更新しません。これを行うには、ラジオ要素のcheckedプロパティを設定する必要があります。 –

0

クリックしたdivに関係なく、[value = likes]ボタンではtrueに設定されています。

嫌いなdivをクリックしたときに[値=嫌い]ボタンを必ず選択してください。

関連する問題