-1

jQueryを使用して、ユーザーがボタンの1つをクリックしたときにラジオボタンからデータ評価を選択できるようにしたいですか?

<label class="ratingStar"><input type="radio" name="spotRating" id="_1of5" data-rating="1" data-spot-id="1" class="rating-system" /></label>
<label class="ratingStar"><input type="radio" name="spotRating" id="_1of5" data-rating="2" data-spot-id="2" class="rating-system" /></label>

私は次のことを試しました

$(".ratingStar").on("click", function(){

    selected_rating = $('input', $this).data("rating");
    selected_id = $('input', $this).data("id");


    console.log(selected_rating)

});
4

3 に答える 3

2

以下は動作します:

$(".ratingStar").on("click", function () {
    selected_rating = $('input', $(this)).data("rating");
    selected_id = $('input', $(this)).data("spot-id");
    console.log(selected_rating)
});

EDIT 1:実際には、 を or に変更しても動作しdata("id")ます。$thisthis$(this)

たとえば、以下が機能します。ここをクリックしてデモをご覧ください。

$(".ratingStar").on("click", function () {
    selected_rating = $('input', this).data("rating");
    selected_id = $('input', this).data("id"); // data("spot-id") also works
    console.log(selected_rating)
});

編集 2: Anthony Grist のコメントを引用します。

コンテキスト ( 2 番目の引数) は、DOM 要素または jQuery オブジェクトのいずれかです。thisDOM 要素なので、直接渡すことができます: $('input', this). $(this)実行すると jQuery 関数が呼び出され、これを単純に含む新しい jQuery オブジェクトが作成されます。これを行う必要がないため (これを渡すだけで問題なく動作します)、そうすることは避けてください。

上記に基づいて、EDIT 1で提供される回答が推奨オプションです。

于 2013-10-01T14:16:38.557 に答える
1

これを試してみてください。要素にIDがなかったので、data-spot-idを意味していると思いました

$(".ratingStar").on("click", function(){
    selected_rating = $('input', this).data("rating");
    selected_id = $('input', this).data("spot-id"); //Changed to spot-id


    console.log(selected_rating)

});
于 2013-10-01T14:15:44.767 に答える
0

.attr() メソッドを使用して属性を参照することで、データへのアクセスを試みることができます。

$(".ratingStar").on("click", function(){
    selected_rating = $('input', $this).attr("data-rating");
    selected_id = $('input', $this).attr("data-spot-id");
    console.log(selected_rating);
});
于 2013-10-01T14:17:57.803 に答える