2012-10-12 2 views
0

코드를 더 짧게 만들기 위해 클릭 이벤트를 반복하고 싶습니다. 나중에이 값 중 30 개를 가질 수 있습니다.jQuery 각 루프 내부를 클릭하십시오.

내 작업 코드는

$(document).ready(function() { 
    var last_click = ''; 

    $("#title").click(function() { last_click = 'title'; }); 
    $("#subtitle").click(function() { last_click = 'subtitle'; }); 
    $("#test").click(function() { last_click = 'test'; }); 
}); 

이것은 내가 (작동하지 않는) 원하는 방법입니다

내 생각 엔 각 루프는 다음 결코 다시 것을 DOM 준비에서 실행되고 있다는 것입니다 클릭 이벤트는 결코 트리거 될 수 없습니까?

$(document).ready(function() { 
    var last_click = ''; 
    var contents = new Array(); 
    contents = ['title', 'subtitle', 'test']; 

    $.each(contents , function(index, value){ 
     $("#" + value).click(function() { last_click = value; }); 
    }); 
}); 

내가 해결할만한 것이 없다면 좋은 해결 방법에 대해 감사 할 것입니다.

+1

당신이해야 할 일 .. 클릭 이벤트를 트리거하면 무슨 뜻입니까? 클릭 이벤트를 '내용'의 요소 목록에 바인딩합니다. –

+0

단지 참고 사항 :'contents'에있는'새로운 Array()'는 다른 배열에 의해 다음 라인에서 clobbered됩니다; 필요하지 않습니다. – apsillers

+0

코드가 작동됩니다 : http://jsfiddle.net/barmar/rS2Gb/6/ – Barmar

답변

6

, class="last-click" 과 같이 한 번 바인딩을 정의

$(".last-click").on('click', function() { 
    last_click = this.id; 
} 
0

정말로 짧게하고 싶다면 모든 비슷한 클래스를 제공하십시오.

$(document).ready(function() { 
    var last_click = '';  
    $(".theclass").click(function() { 
     last_click = this.id; 
    }); 
}); 
예를 들어, 나는 오히려 당신이이 바인딩 할 모든 요소에 클래스를 추가
0

당신은 당신의 버튼이나 요소에 대한 value 속성이있는 경우 , 당신은 그것을 할 수 있습니다.

$(document).ready(function() { 
    var last_click = ''; 
    $("input").click(function() { 
     last_click = $(this).attr('value'); 
     alert(last_click); 
    });  
});​ 
나는 "당신이"입력 유형 = "버튼을 사용하는 것으로 가정

이 또한 여기 당신이 행동에서 볼 수있는 데모는 다음과 같습니다,281,

관련 문제