2010-11-26 6 views
1

2 개의 배열 요소가 있습니다. 변경 이벤트를 첫 번째 요소에 바인딩하여 선택 변경이 두 번째 요소에도 영향을 주도록했습니다. 예 :<Select> 배열 요소의 change 이벤트는 jQuery에 의해 다른 <Select> 요소를 채 웁니다.

<select name="item1[]" id="item1[]"> 
    <option value="0">...</option> 
    <option value="1">...</option> 
    <option value="3">...</option> 
</select> 

<select name="item2[]" id="item2[]"> 
    <option value="0">...</option> 
    <option value="1">...</option> 
    <option value="3">...</option> 
</select> 

<select name="item1[]" id="item1[]"> 
    <option value="0">...</option> 
    <option value="1">...</option> 
    <option value="3">...</option> 
</select> 

<select name="item2[]" id="item2[]"> 
    <option value="0">...</option> 
    <option value="1">...</option> 
    <option value="3">...</option> 
</select> 

따라서 PHP 프로세스 대기 항목 1 항목 2와 배열 요소 많은 행들이있다.

item1 선택이 변경되면 item2가 채워집니다. 하지만 다음 jquery 함수는 item1 change 이벤트에서도 작동하지 않습니다. 바인딩 기능이 작동하지 않는 이유를 이해할 수 없습니다. 나는 경보를 사용하려고 노력했지만 일하지는 않았다.

<script> 
$('#item1[]').each(function(index){ 
    $(this).bind("change", function(){ 
    another function call to populate item2 
    alert($(this).val()); // not working 
    }); 
}); 
</script> 

도와주세요.

감사합니다.

$('#item1\\[\\]') 

http://api.jquery.com/category/selectors/를 참조하십시오 : - (@jensgram가 지적한대로 그들은 단지 일을 복잡하게하고, invalid in HTML 4 또는 ID 속성에서 제거)

코멘트 외에도
+0

의 ID를 참조들은 반드시 고유. – jensgram

+0

두 요소 모두 ** ID **'item1 []'이있는 오자입니까? ID는 고유해야합니다! –

+0

귀하의 행사는 [여기] (http://jsfiddle.net/jensgram/YD25J/)입니다. – jensgram

답변

1

, 당신은 그 대괄호를 탈출해야합니다

+0

고마워요. 조금 더 도와 주시겠습니까? item1이 변경 될 때 어떻게 item2 색인을 결정할 수 있습니까? 아이템 [1]이 바뀌면 아이템 2 [1]만이 다른 아이템 2가 아닌 아이템 2 [..] – Iqbal

+0

"... 그들은 복잡해질뿐입니다"그리고 [무효] (http://www.w3.org/ TR/html4/types.html # type-id). – jensgram

+0

@jensgram - 좋은 지적. – karim79

0

당신은 그런 복잡한 전화를 할 이유는 확실하지,하지만 그것을 수행해야합니다

$('#item1\\[\\]').change(function(){ 
    alert($(this).val()); 
}); 

(하나만을 가지고 제공 요소와 함께). 당신의 이름의 문자 부분으로 메타 문자 (#;&,.+*~':"!^$[]()=>|/@) 중 하나를 사용하려는 경우, 당신은 두 개의 백 슬래시 문자를 이스케이프해야합니다

:

[]는 속성 선택에 대한 메타 문자입니다 : \\. 예를 들어 id="foo.bar"의 요소가있는 경우 $("#foo\\.bar") 선택기를 사용할 수 있습니다.

PHP에 대괄호가있는 경우 btw는 ID에 필요하지 않습니다. name 속성에서만 의미가 있습니다.

+0

예 펠릭스. PHP 용으로 보관해야합니다. 나는 ID가 필요 없다는 것을 알아 차렸다. 이제 내 문제는 동일한 인덱스 된 item2 [item1의 동일한 인덱스]를 mysql 데이터로 채우는 것입니다. – Iqbal

+0

@Iqbal : HTML에 어떻게 배치되어 있습니까? 'item2'는 항상 상응하는'item1'을 따릅니다. (즉,'item1'의 다음 형제 인'item2'입니까?) –

1

동일한 id가 문서에 두 번 이상 존재하지 않아야 jquery는 하나의 id를 찾자 마자 domobjects 검색을 중지합니다.

은 또한, []의 ID에 유효하지 W3C

관련 문제