2010-06-06 5 views
3

나는 1에서부터 많은 수의 항목까지 셀 수있는 고유 한 클래스 이름을 가진 앵커 태그 목록을 만드는 while 루프가 있습니다. 클릭하면 특정 앵커 태그와 클래스에 대한 CSS attriubute를 변경하여 배경색이 변경되었다고 말할 수 있습니다. 여기에 내가 이런 걸보고 내 jQuery를 싶습니다 내 코드PHP while 루프를 사용하여 Jquery를 사용하는 동적 선택 자

while($row = mysql_fetch_array($results)){ 
$title = $row['title']; 
$i++; 
echo "<a class='$i'>$title</a> 

} 

, 분명 내가 시작하는 곳처럼 혼란 스러워요 이것보다 더 복잡 될 것입니다.

$(document).ready(function() { 
$('a .1 .2 .3 .4 and so on').click(function() { 
$('a ./*whichever class was clicked*/').css('background':'red'); 
     }); 
    }); 
+0

"고유 한"클래스 대신 ID를 사용합니다. 그리고 어떤 링크가 클릭되었는지에 관계없이 동일한 작업이 수행되는 것처럼 보입니다. 따라서 공통된 클래스를 제공하지 않는 것이 좋습니다. 이것은 무엇을위한 클래스인가, 비슷한 행동/속성을 여러 요소로 할당합니다. –

+0

다른 오류 나는 방금'.'대신'.css()'호출에서 구분 기호로':'를 사용한다는 것을 알았습니다. 콜론은 객체를'.css()'에 넘기는 경우에만 사용됩니다. – user113716

+0

@ Felix에 동의합니다. 클래스 이름에 대해 숫자와 같은 특정 용도가없는 경우 (동일한 클래스 이름을 가진 다른 요소와 같이) ID는 일반적으로 고유 한 식별자로 사용됩니다 (단, ID 번호는 유효하지 않습니다). 클래스 동일 할 수 있습니다. 색인 번호는 사용자 정의 속성으로 전달 될 수도 있습니다. – user113716

답변

2

클래스의 이름을 좀 더 일관되게 줄 수 있습니까? 등 myClass_1, myClass_2처럼

그런 다음 당신은 할 수 :

여기
$(document).ready(function() { 
    $('a[class^=myClass_]').click(function() { // Assign handler to elements with a 
               // class that starts with 'myClass_' 
     $(this).css('background','red'); // Change background of clicked one. 

    }); 
}); 

는이 myClass로 시작하는 모든 클래스에 이벤트를 할당하는 데 사용되는 선택 "로 시작".

필요한 경우 색인 번호를 검색 할 수 있습니다.

이벤트 처리기 내에서 $(this)은 클릭 된 이벤트 핸들러를 참조합니다.

라이브 예 : 대한http://jsfiddle.net/Jurv3/

문서는 선택 "로 시작"http://api.jquery.com/attribute-starts-with-selector/

편집 : 내가 선택에 누락 된 ]했다. 이제 해결되었습니다.

+0

$ (this) – colinmarc

+0

@colinmarc를 언급하는 경우 각 클래스에 고유 한 클래스를 지정할 이유가 없습니다. OP는 어떤 이유에서든 고유 한 클래스를 사용하므로 내 대답은 OP의 요구 사항을 반영합니다. 동일한 클래스 이름으로 다른 요소 집합이 생성 될 수 있습니다. – user113716

2

이 같은 배열의 반복자를 사용할 수 있습니다

var myclasses = [".1",".2",".3"]; // generated by php 

$.each(myclasses, function(index, value) { 
    $('a '+value).click(function() { 
     $(this).css('background':'red'); 
    }); 
}); 

참고 : 나는 당신이 앵커 태그의 목록에 각 항목에 대한 고유 ID를 사용하여 더 나을 수 있다고 생각하고 있습니다 그들 모두는 하나의 클래스를 공유합니다. 그것이 클래스와 ID가 필요한 것입니다.

1

예를 들어 myClass처럼 모두 동일한 클래스를 지정하십시오. 그런 다음 - 링크와 대상 사이의 관계는 각각 동일 한대로 링크 자체에서 작동, 또는 부모가있는 것처럼

$('a.myClass').click(function() { 
    $(this).css('background':'red'); 
}); 

이 오래 작동합니다. 부모에서 작동하려면 $(this).parent().css(...)이고, 다음 요소에서 작동하려면 $(this).next().css(...) 등이됩니다.

+0

핸들러를 모든 myClass 요소에 할당하기 위해'each()'를 사용할 필요는 없습니다. – user113716

+0

아, 네 말이 맞아. 내 실수는 편집 할게. – colinmarc

0

시도해 보셨습니까? JQuery와에 대한

while($row = mysql_fetch_array($results)){ 
$title = $row['title']; 
$i++; 
echo '<a class="anchor_link" id="'.$i.'">'.$title.'</a>'; 

} 

: 그리고

난 당신이 앵커 마커로 그 $ 나는 PHP 변수가 필요하다고 가정하고 있기 때문에
$(document).ready(function() { 
    $('a.anchor_link').click(function() { 
     var thisAnchor = $(this).attr('id'); 
     $(this).css('background':'red'); 
    }); 
}); 

내는 JS의 VAR을 추가하는 이유는 'thisAnchor'인가? 그렇다면 js var를 가져 와서 사용할 수 있습니다. 앵커 된 컨텐츠가 id로 표시되어 ID를 사용할 수 없다면 'title'또는 'alt'와 같이 다른 attr을 사용하십시오.

도움이 되었기를 바랍니다.

관련 문제