2013-02-27 3 views
0

나중에 루프에서 사용하려는 특정 세트의 <li> 요소를 수집하려고합니다. 그러나, 나는 올바른 구문을 가지고있는 것처럼 보이지 않는다 : 디버그 콘솔은 내 객체가 정의되지 않았다는 것을 알려준다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?나중에 사용하기 위해 요소를 가져와 배열에 저장하는 jquery 방법은 무엇입니까?

var all_help_triggers = []; 
$(".canned-triggers > li").each(function() { all_help_triggers.push($(this)) }); 
all_help_triggers[0].click(function(){alert('hi!');}) 
+0

here 당신이 HTML ... – Mortalus

+1

작동하는 것 같다보기 여기에서 잘 ~ : http://jsfiddle.net/BVrwu/ –

답변

3
당신은 단순히이 작업을 수행 할 수 있습니다

:

// save selected jQuery objects into variable 
var all_help_triggers = $(".canned-triggers > li"); 

// get first element in jQuery object, and assign a click handler 
all_help_triggers.eq(0).click(function(){ 
    alert('hi!'); 
}); 

편집 (오프 추가 의견을 바탕으로) :

는, 인덱스를 얻을 사용하려면 .index()

$('.canned-content > li').hide(); 

$('.canned-triggers > li').click(function() { 
    var i = $(this).index(); 
    $('.canned-content > li').eq(i).show(); 
}); 

http://jsfiddle.net/samliew/erp2J/11/

페이지로드시 목록을 숨기려면 CSS에서해야합니다. 대신에 :

$('.canned-content > li').hide(); 

는 줄을 제거하고 대신 CSS를 추가

.canned-content > li { display: none; } 
+0

.eq() : Perfect! 그러나 이제는 루프에서이 트리거를 적용하여 다음과 같이 다른 목록에서 연대순으로 동일한 트리거를 실행하려고합니다. http://jsfiddle.net/foomarks/erp2J/8/ 제안 사항? –

+0

업데이트 된 답변보기 –

+0

굉장! 그것은 훌륭한 간단한 해결책입니다, 감사합니다! –

1

각()가 "이"값이 "각"요소가 반복 처리를 의미 사용할 때. 그래서 대신 추가 배열을 사용하여, 당신은 그런 일을 시도해야 ...

$(".canned-triggers > li").each(function() { 
    $(this).click(function({ 
     alert('hi!') 
    }); 
}); 

그냥 당신의 코멘트를주의 : http://jsfiddle.net/ScRqc/

<ul class="canned-triggers"> 
    <li data-element="#li1">heyo1</li> 
    <li data-element="#li2">heyo2</li> 
    <li data-element="#li3">heyo3</li> 
</ul> 

<ul class="canned-content"> 
    <li id="li1">I'm heyo content 1</li> 
    <li id="li1">I'm heyo content 2</li> 
    <li id="li2">I'm heyo content 3</li> 
</ul> 


$('.canned-content > li').hide(); 

$('.canned-triggers > li').click(function() { 
    var toggleElement = $(this).data("element"); 
    $(toggleElement).show(); 
}); 
+0

고침 - 고마워요! :) 복사 붙여 넣기 문제 :) – Mortalus

+0

이것은 훌륭합니다. 불행히도, 시나리오에서 이것을 적용하는 방법을 잘 모르겠다. 트리거를 다른 그룹에서 연대순으로 실행하려면 다음과 같이하면된다. http://jsfiddle.net/foomarks/erp2J/8/ 여전히 가능한가? .each()를 적용하면됩니까? –

-1

당신은 당신의 선택 여부를 확인해야합니다

이 바이올린 예 참조 아무것도 돌려주지 않습니다.

또한 jQuery 컬렉션은 배열과 유사합니다. 즉, 배열로 명시 적으로 변환 할 필요가 없다는 의미입니다. for으로 아무런 문제없이 반복 할 수 있습니다. 당신은 여전히 ​​자바 스크립트 배열을 필요로하는 경우

그러나, 다음과 같은 코드를 사용하여 수행 할 수 있습니다 :

var all_help_triggers = $.makeArray($(".canned-triggers > li")); 

더 많은 문서를 $.makeArray 방법에

+0

니스, 나는 사용자를 도우려고 노력하고 더 이상의 의견이없는 downvote를 얻는다. 정말 좋은. – gustavohenke

관련 문제