2011-12-26 3 views
2

방금 ​​지난 2 일 동안 jQuery를 배웠으므로이 기능에 익숙하지 않습니다.jQuery 선택자가 변덕스러운 경우

간단한 탐색 사이드 바를 만들려고합니다. 막대를 표로 만들었고 사용자가 특정 셀 위로 가면 해당 셀이 켜지고 다른 하위 탐색 막대가 원래 막대 옆에 나타납니다.

원본 막대가 머리글 바로 아래에 나타납니다. 따라서 사용 된 구문은 다음과 같습니다.

var headerHeight = $('#headerTable').height(); 
$('#selectStart').offset({left: 0, top: headerHeight}); 
.... 
<table id="selectStart" class="selector1"> 
    <tr><td id="sel1Projects" class="selector1"> 
.... 

지금까지는 그렇게 좋았습니다. 이제는 사용자가 해당 테이블을 클릭하면 해당 하위 탐색 모음이 첫 번째 탐색 모음의 오른쪽에 즉시 나타나도록하고 싶습니다. 그래서 나는 그것을 테스트하기 위해 두 개의 새 테이블 썼다 :

<table id="selectProjects" id="table2" class="selector2" class="table2"> 
<tr><td id="sel2Project1" class="selector2"> 
.... 
<table id="selectDevelopment" id="table2" class="selector2" class="table2"> 
<tr><td id="sel2Dev1" class="selector2"> 

을하지만이에 대한 선택기는 목에 진짜 고통되고있다. 방금하면

var select1Width = $('#selectStart').width(); 
$('#selectProjects').offset({left: select1Width, top: headerHeight}); 
$('#selectDevelopment').offset({left: select1Width, top: headerHeight}); 

완벽하게 작동합니다. 그러나 이것은 아주 좋은 코딩이 아닙니다. 모든 비슷한 테이블을 그룹화하여 모든 방식으로 배치 할 수 있어야합니다. 그런 다음 사용자가 그 당시 볼 수있게하려는 테이블 만 표시 할 수 있습니다.

$('.selector2').offset(...) 

는 지금까지 모든 테이블을 선택하는 것과 잘 작동하지만 그들은 모두 스타일링을 위해 동일한 클래스를 공유하기 때문에 또한, 같은 장소에있는 모든의를 둔다. 그러나 지금까지, 이것은 내가 기대했던 것입니다.

$('.selector2 table').offset(...) 

이 클래스의 테이블을 선택하는 것이 좋습니다. 그것은 아무 것도하지 않았습니다. 내가 타이핑하는 방식에 문제가 있습니까? 약간의 좌절감을 느낀 후에 두 번째 클래스 인 "table2"를 각 클래스에 추가했습니다.

$('#table2').offset(...) 

아직 없습니다. 그래서 새로운 클래스를 추가했습니다.

$('.table2').offset(...) 

Nothing; 그러나 셀렉터 2가 공유하는 다른 클래스를 사용하면 효과가 있습니다. 테이블을 개별적으로 선택했을 때 원하는 결과를 얻었 기 때문에 테이블을 선택하지 않아도되는 문제는 아닙니다.

그래서 내가 뭘 잘못하고 무엇을 이해하지 못합니까? 를 변경하면 $의

+0

정말 질문을 이해하지 못합니다. 어쩌면 당신이 필요합니다 : $ ("# selectProjects # sel2Project1")? 두 개 이상의 요소에 동일한 id를 사용해서는 안됩니다. – Fenec

+0

아니요, 요소를 선택하려고하지 않습니다. 테이블을 적절히 정렬하고 싶지만 jQuery가 개별적으로 그룹으로 선택할 수는 없습니다. –

+0

테이블에 두 개의'class' 속성이 있음을 알았습니다. 나는 그것이 유효하다고 생각하지 않는다. 여분의 클래스를 추가하고 싶다면, 기존의'class' 애트리뷰트에 추가하되, 이전 클래스와 공백으로 구분하십시오. – BoltClock

답변

1

하는 대신 확률값을 해결되는지

+0

고마워요! 이것은 효과가 있었다. 그래서 내가 전에 시도했던 것들이 어땠어? –

+1

'''.selector2 table'''는 selector2 클래스가있는 요소의 자식을 테이블로 제공합니다. '''table.selector2'''는 selector2 클래스가있는 테이블을 제공합니다. –

0

당신은 JQuery와에 대한 캔트 반복 아이디 ... 참조 ('. selector2 테이블'). 오프셋 (...)

시도

$ ('table.selector2'). 오프셋 (...)

+0

그들로부터 "table2"id를 삭제하는 것은 아무 것도하지 않았습니다. –

+0

클래스를 결합하는 것은 어떻습니까? – Toping

관련 문제