2009-08-24 3 views
2

JavaScript 코드를 HTML에서 분리하려고합니다. 내가 방법을 전달하고있어 단지 매개 변수를 포함하는 속성에 온 클릭을 교환하고 싶습니다눈에 잘 띄지 않는 JavaScript - 안전한 속성?

<div onclick="return do_something_with('100566');" class="clickable">Click Me!</div> 

: 저는 현재 다음과 같습니다 코드가 있습니다.

나는 다음 코드 유형이에 대한 jQuery를 사용하고 있습니다 :

var $j = jQuery; 
$j(function(){ 
    $j('.clickable').live('click',function(){ 
     param = $j(this).attr('attribute_name'); 
     do_something(param); 
    }); 
}); 
내가이 매개 변수 값을 전달하기위한 안전 할 것 'ATTRIBUTE_NAME'에 사용할 수있는 어떤 속성

? 나는 id를 사용할 수 있다는 것을 알고 있지만, DOM의 다른 위치에 동일한 id를 가진 요소를 이미 정의했을 것이다.

제안 사항?

+0

참조 : http://stackoverflow.com/questions/432174/how-to-store-arbitrary-data-for-some-html-tags http://stackoverflow.com/questions/439110/is-it -all-right-to-custom-custom-html 속성 추가 http://stackoverflow.com/questions/994856/so-what-if-custom-html-attributes-arent-valid-xhtml http : // stackoverflow . – nickf

답변

0

a 태그를 만드시겠습니까? 앵커 (#someThing) 부분을 사용하거나 rel 특성을 사용하는 사이트가 여러 곳 있습니다.

+0

많은 응용 프로그램에서이 작업을 수행 할 수 있지만 div가 x 이벤트를 수신하고 잠재적으로 여러 매개 변수를 전달해야하는 다른 영역을 찾고 있습니다. –

+0

Div는 문자 데이터가 아닌 블록 요소의 의미입니다. '# param1, param2'와 같이'# '을 항상 쉼표로 구분할 수 있습니다. –

+0

오른쪽. 이벤트를 수신하고 다른 블록에서 작업을 수행하는 일부 블록 요소가 있습니다. 이상하게 들리 겠지만 고객의 요구 사항입니다. 가능한 한 태그를 사용하고 매개 변수 전달과 관련하여 rel 및 href를 사용합니다. 여러 매개 변수에 쉼표 또는 공백으로 구분 된 목록을 사용합니다. 이미 사용 된 요소 ID를 매개 변수로 전달해야하는 요소의 경우 id = "{word} - {real_id}"도 좋습니다. 답변 해 주셔서 감사합니다. 나는 더 많은 의견을 표명했을 것이다. 그러나 내가 여기에서 새롭기 때문에 나는 그 특권을 아직 가지고 있지 않다. –

0

class 또는 title 속성을 공백으로 구분 된 매개 변수 목록으로 사용할 수 있습니다. 제목의 단점은 당신의 요소가 공중 선회 한 때 팝업으로 표시 할 것입니다 :

<div class="clickable param1 param2 param3"> 

또는

<div class="clickable" title="param1 param2 param3"> 

여기 당신도 고려해 볼 수 있습니다 other attributes의 목록입니다.

+0

이전에 언급 한 "호버 (hover)"이유로 제목을 사용하지 않겠습니다. 특정 청취자를 추가하기 위해 클래스를 선택 자로 사용하기 때문에 나는 그 클래스에서 멀리 떨어져있을 것이라고 생각합니다. –

2

나 자신은 종종 고유하거나 비어있는 <span>에 데이터를 첨부하기 위해 id을 사용합니다.

1

div에 rel 태그를 사용할 수 없습니까? doSomething에 1 개의 매개 변수 또는 n 개의 매개 변수를 전달할 수 있습니다. 그래서 지금 PARAM이 해봐요을 보낼 때

<div> 
    <a class="clickable" rel="param1 param2 param3">Click Me!</a> 
</div> 

그 것이다 매개 변수를 통해 전송 된 것을 확인하는 데 사용할 수 있습니다 param.indexOf("param1") 공백으로 구분 된 목록?

+0

나는 그것을 만들었을 것이다 :

단지 안전하고 타당한 ... – jsnfwlr

4

나는 보통 Client-100566 같은 의미있는 접두사를 추가 한 다음이 코드를 사용하여 액세스 :

var param = $(this).attr("id").split("-")[1]; 

편집 : 제거 제안을 무효 모든 숫자 ID 토큰.

+0

나는이 아이디어를 정말로 좋아한다. 나는 내가 필요한 많은 것들을 위해 효과가있을 것이라고 생각한다. –

+0

어쨌든 접두어를 추가하려면 ** 필요합니다. 번호가있는 ID를 시작할 수는 없습니다 (물론 HTML은 유효하지만 HTML은 유효하지 않습니다). http://www.w3schools.com/tags/att_standard_id.asp – nico

+0

아, 나는 그 사실을 몰랐다. 확인하기 위해 W3C 표준 (http://www.w3.org/TR/REC-html40/types.html#type-name)에서 두 번 확인했습니다. – cdmckay

0

속성 이름만으로 구성 할 수 있습니다.

<div onclick="foo();" silkyvalue="12938">hello</div> 

나는 일반적으로 'my_somethingID'와 같은 이름 지정 형식을 사용합니다.

+1

유효한 HTML이 아닙니다. –

+0

사실, 그렇습니다. –

+0

글쎄, 당신은 틀렸어. 괜찮아요 * HTML *, 그것은 주어진 doctype 하에서 일종의 W3C 유효성 확인 메커니즘을 통과하지 못할 수도 있지만 유효합니다. 사용자 정의 속성의 또 다른 예는 'accesskey'입니다. 이 번호는 휴대 전화에서 눌러 진 숫자를 링크에 매핑하는 데 사용됩니다. 어느 누구도 익숙하지 않더라도이 방법을 사용하는 것이 완전히 허용됩니다. 영업 이익 근본 문제를 해결하는 최선의 방법인지 여부에 관해서는 논쟁의 여지가 있습니다. 그러나 그것은 유효합니다. –

관련 문제