2009-10-08 3 views
10

현재 다음과 같은 것을 사용하고 있습니다 :jQuery 클릭 함수에 여러 인수를 보내는 방법?

$('.myclass').click(function(){ 
    var msg = $(this).attr('id'); 
    alert(msg) 
}); 

그리고 HTML :

< a href="#" class="myclass" id="101">Link</a> 

추가 매개 변수가 필요한데 어떻게 읽습니까? 또한 적절한 방법을 사용하고있는 현재의 방법입니까? 원래 숨겨진 입력 필드를 사용하여 이미 단계적으로 향상되었습니다. : p

+0

숫자를 사용하여 ID를 시작하는 것은 좋지 않지만, ID로 사용하지 않는다면 아마 괜찮을 것입니다. 마지막으로 확인한 경우 Firefox는 숫자로 시작하는 ID를 인식하지 못합니다. – Mottie

+0

예, 맞습니다. fudgey ... 숫자가있는 ID를 시작하지 마십시오.하지만 내 대답의 아이디어는 여전히 동일합니다. – Jason

답변

1

당신은 bind()를 사용하는 가장 좋은 방법이 될 수 없습니다 event.data

18

jQuery Events

jQuery .click()

$('.myclass').bind("click", { Param1: "", Param2: 2 }, function(event){ 
    alert(event.data.Param2); 
}); 
+3

이 기능을 같은 페이지에 포함시켜야한다는 뜻입니까? 현재 내 모든 js 파일은 별도의 파일에 있습니다. – Roger

+0

그래서 이벤트 데이터에서 json 객체 전체를 전달할 수 있습니다. 그렇지 않습니까? 좋은 기능. –

+0

@Roger 외부에서도 함수를 가질 수 있습니다. 응답이 표시 될 때 event.data.ParamX 메서드를 사용하여 외부 함수에서 인수를 구문 분석해야합니다. 그것은 완벽하게 작동합니다. – andreszs

1

이 같은 이벤트 핸들러에 추가로 데이터를 전송하지만 뭔가 내가했을 수 있습니다 다른 세 가지를 모두 의미하는 id="101-red-420582"과 같은 다른 매개 변수로 id 속성을 설명하는 하이픈인데 split()을 사용하여 쉽게 세분화 할 수 있습니다. 기능. 그 자체로 최고는 아니지만 나는 그것을 해냈다.

+2

우연히 필자는이 정확한 생각을 내놓았지만 제대로 작동했다.하지만 올바른 방법과 때로는 문자열이 상당히 커질 수 있다고 확신하는 사람처럼 (이드의 한계가 있는지 확실하지 않음). – Roger

+0

나는 항상 비슷한 방법을 사용하지만 'id'대신 'rel'속성을 사용합니다. 나는 HTML을 포함하여 당신이 필요로하는만큼 많은 정보를 보유 할 것이라고 믿는다. – Mottie

0
빠른 솔루션

<p class="msg_head" id="837" rel="a" **till_limit="9"**>Header-1 </p>

이 자신의 ID를 정의하고 요구 사항에 따라 요소를 참조 같은 유사한 솔루션입니다

$(this).attr('till_limit'); 

당신은 참조 할 수 있습니다.

+1

게시물에 [서명 또는 태그 라인을 사용하지 마십시오] (http://stackoverflow.com/faq#signatures)하십시오. – meagar

관련 문제