2014-05-22 2 views
0

앵커 태그를 클릭하거나 L 키를 눌러 동일한 jQuery 함수를 트리거하는 방법을 파악하려고합니다. 이 경우keydown 이벤트 및 클릭 이벤트와 동일한 기능

jQuery('body').on('click','.jm-post-like',function(event){ 
    event.preventDefault(); 
    heart = jQuery(this); 
    post_id = heart.data("post_id"); 
    jQuery.ajax({ 
     [NOTE: inside here there is some code using the variable 'heart'!] 
    }); 
}); 

, heart'.jm-post-like'을 의미한다 : 여기

시작점이다.

function likesystem(event) { 
    heart = jQuery('.jm-post-like'); 
    post_id = heart.data("post_id"); 
    jQuery.ajax({ 
     ..... 
    }); 
} 

jQuery('.jm-post-like').on('click', function(event) { 
    event.preventDefault(); 
    likesystem(event); 
});  

jQuery(document).keydown(function(event) { 
    if (event.keyCode == 76) { // L key code 
     likesystem(event); 
    } 
}); 

내가 여러 '.jm-post-like'을가 해당 페이지를 제외하고 잘 작동 '라고해야 : 둥지 함수에서 그 코드를 위해, 그 VAR을 변경했다. 나는 here 제안 thisthat를 사용하여 시도했지만를 keyDown의 경우 this는 jQuery를 (문서)를 참조 것입니다!

jQuery(document).keydown(function(this) { 
    if (event.keyCode == 76) { // L key code 
     likesystem(this); 
    } 
}); 

내가 jQuery를 정말 치열하지 않다, 그래서 어떤 제안이 크게 감사합니다;)

+1

페이지에 둘 이상의 페이지가있는 경우 현재 "L"언론 중 어느 페이지가 전달되었는지 어떻게 알 수 있습니까? – Will

+0

나도, 사용자가'L'을 눌렀을 때 어떤 .jm-post-like를 타겟팅했는지 알기를 원합니다. 마우스를 올려주세요? – SeanKendle

답변

1

당신은 어느 쪽을 말할 필요가있다.

이벤트 대상을 사용할 수 있습니다.

function likesystem(event) { 
    heart = jQuery(event.target); 

은 또는 당신은이를 사용할 수 있지만

jQuery(document).on("keydown", ".jm-post-like", function(event) { 
    if (event.keyCode == 76) { // L key code 
     likesystem(this); 
    } 
}); 

버블 링 이벤트를 사용해야하지만 그들은 "L"키를 눌러 초점 요소를 가지고 있지 않으면 정말 아무 의미도 없습니다.

+0

그러나 event.target은 keypress 이벤트 내에서 $ (this)를 말하는 것과 동일합니다. 이것은'document'일까요? – SeanKendle

+0

@SeanKendle http://jsfiddle.net/kz9S4/ – epascarello

+0

입력란 (예 : 텍스트 상자)에있는 경우 작동하지만 시스템 캐럿이 페이지의 아무 곳에 나있을 수 있다고 가정했습니다. 그는 일종의 단축키 시나리오를 설정하려고합니다. – SeanKendle