2013-10-01 3 views
-1

jQuery 사용 사용자가 단추 중 하나를 클릭 할 때 라디오 단추에서 데이터 등급을 선택할 수있게하려면?jQuery를 사용하여 데이터 ID 선택

<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) 

}); 
+1

당신이 시도한 것을 이야기 해 주셨습니다. 이제 문제가 무엇인지 알려주세요. 그것은 무엇을합니까? 왜 그게 정확하지 않습니까? 그것은 실제로 무엇을해야합니까? –

+0

두 버튼의 ID가 같지 않습니다. 잘못된 html입니다. – Raidri

+0

'$ this'는 정의되지 않았습니다. 그것이 코드가 작동하지 않는 전체 이유입니다. 글로벌'$ this '를 설정했을지 모르는'var' 키워드를 사용하지 않았던 다른 유사한 기능을 가지고 있지 않다면 콘솔에 갔을 때 분명했습니다. –

답변

1

이 시도하려고 한 요소에는 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) 

}); 
2

아래의 작동 데이터 자리-ID를 의미 짐작이 있었다 :

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

EDIT 1 :$thisthis 또는 $(this)으로 수정하면 실제로는 data("id")으로 작동합니다.

예를 들어, 아래가 작동합니다. 데모를 보려면 here을 클릭하십시오. 안토니 제분 용 곡물의 코멘트를 인용 :

$(".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.

컨텍스트 (번째 인수 해당 할 수있다) 중 하나 DOM 요소 또는 의 jQuery 오브젝트. thisDOM 요소이므로 $('input', this)을 직접 전달할 수 있습니다. $(this)을하는 것은 jQuery를 함수를 호출하고, 생성 새로운 jQuery를 목적 단순히이 포함 - 당신이 (이 잘 작동 통과) 그렇게 필요하지 않기 때문에 당신이 그렇게

일을 피해야에 기반 위의 대답은 EDIT 1 아래에있는 것이 좋습니다.

+0

'$ (this)'을 할 이유가 절대적으로 없습니다. (그리고 적어도 몇 가지 이유가 있습니다 **). –

+0

내가 그들을 이해하고 사용을 중단 할 수 있도록 설명해주십시오. 결과에 더 많은 가치를 부여 할 수도 있습니다. 사이드 노트는 바이올린에서이 방법으로 만 작동합니다.'$ this'는 효과가 없었습니다. – Harry

+4

컨텍스트 (두 번째 인수)는 DOM 요소이거나 jQuery 개체가 될 수 있습니다. 'this '는 DOM 요소이므로 직접 전달할 수 있습니다 :'$ ('input ', this)'. '$ (this)'를 호출하면 jQuery 함수가 호출되고, 단순히'this'를 포함하는 새로운 jQuery 객체가 생성된다. 그렇게하지 않아도된다. –

0

.attr() method을 사용하여 속성을 참조하여 데이터에 액세스 할 수 있습니다.

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