2010-06-02 4 views
1

내가 입력과 같이있어 :의 jQuery GET 값은

내가 그 요소를 잡은 함수 호출 foo는 추가 jQuery를 사용하고 싶습니다() 변경 이벤트. 현재 나는 그것을 끝낼 수 있지만 두 가지 해킹이 있습니다. 내 (작동) 코드 :

$(":input[name*=myfield]").change(
function($(":input[name*=myfield]")) { 
    foo(); 
}); 
)}; 

거기에 두 가지 해킹이 있습니다. 제거하고 싶습니다.

  1. 입력 이름은 다차원 배열이므로 어떻게 [input * name = somename] 대 [name * = someone]을 사용할 수 있습니까? 나는 * =보다는 오히려 정확한 이름을 사용하는 것이 더 빠르다고 생각하지만, 다차원 배열에서 대괄호에 대해 정확한 이스케이프 시퀀스를 얻을 수는 없습니다.
  2. 요소를 두 번 선택할 필요가 없도록 호출을 함께 연결할 수 있습니까? 그 HTML 요소를 var로 선택하는 표준적인 방법은 그 var를 사용하는 것입니까? 또는 함께 연결할 수 있습니까?

도움 주셔서 감사합니다. 아직도 JS/JQ에서 내 발판을 잡기 위해 노력하고 있습니다.

+0

내가 당신의 HTML 양식하시기 바랍니다 볼 수 있습니다. – RobertPitt

답변

4

1 - 대괄호 및 기타 메타 문자를 이스케이프하려면 \\[을 사용하십시오. Selectors을 참조하십시오.

2-$(":input[name*=myfield]").change(foo);

+0

+1. OP에 : 이벤트 처리 함수에 인수로 요소를 전달할 필요는 없습니다. 당신은 jQuery의 범위가 지정된'$ (this)'변수를 사용할 수 있습니다.이 변수는 핸들러가 첨부 된 요소를 자동으로 확인합니다. 실제로 엘리먼트가 필요하다면 코드 예제처럼 보이지 않는다. – womp

+0

@womp 감사합니다! $ (이)가 적절하게 해결되었음을 깨닫지 못했습니다. 나는 실제로 그 요소 (소프트 클라이언트 측 유효성 검사를 몇 개 핸드 롤링)의 값으로 물건을 만들고있어, 이것이 내가 필요한 것이다. 도움과 의견에 대한 설명에 감사드립니다. –

+0

@womp - 정말, 당신은 당신의 설명을 위해이 답변에 대한 담당자가 마땅합니다. @Travis - 문제가 해결되어 기쁩니다. – karim79

1

이 문제점은 무엇입니까? 당신의 HTML 요소에서

$("input[name=somename]").change(function(){..}); 
+0

대괄호가있는 이름에는 작동하지 않습니다. JS 코드에서 하나의 백 슬래시 만 출력하는 PHP 스크립트에서 두 개의 백 슬래시로 대괄호를 이스케이프하고있었습니다. 도! 그리고 내 다른 질문은 JS 범위 지정을 너무 잘 이해하지 못하고 $ (this)가 HTML 요소 (변경 이벤트의 anon 함수 내부)를 참조한다는 것을 인식하지 못했다는 사실을 중심으로 회전 함 –

1

같이 * 데이터 -를 사용 그렇게

<input type="checkbox" data-name="box" name="myName[0][1]" checked="" /> 

는 jQuery를

$('input[data-name=box]').click(foo); 

function foo() 
{ 
    //this = input element 
} 
+0

OK, 내부 함수 foo, 이것은 입력 요소로 범위가 지정됩니까? 정말 끝내주는 군. JS 범위 지정은 항상 저를 버렸습니다 ... 실제로, 당신이 그 우물을 다루는 편리한 자원을 가지고 있다면, 공유하는 것이 마음에 드십니까? 나는 그것에 대한 몇 가지 추가 정보를 사용할 수 있습니다. –

+0

일반 프로그래밍 언어보기 : http://en.wikipedia.org/wiki/This_(computer_science) jQuery에서는 http://remysharp.com/2007/04/12/jquerys-this-demystified/ .. " this "는 선택된 요소에 대한 기본적인 전역 객체이며 NodeType 등과 같은 프로토 타입을 가지고 있습니다. 예 : if (this.nodeType == 'div'); 그 (것)들 연결은 당신을 시작되어야한다! – RobertPitt