2012-02-28 2 views
1

클릭 가능한 div 요소가 만들어져 있으며 그 안에 몇 개의 링크가 있습니다. div의 아무 곳이나 클릭하면 페이지가 메일 링크로 이동하지만 그 안에있는 다른 모든 링크로 이동할 수 있기를 원합니다. div. 나는 e.stopPropagation(); 메서드를 호출하여이 작업을 처리했습니다. 이것은 매우 효과적입니다. ctrl 키를 누른 상태에서 (새 탭에서 엽니) 링크를 클릭하면 이 http://jsfiddle.net/nfZ3y/1/클릭 할 수있는 DIV (어린이 링크 포함)

문제는, 링크가 작동하지 않습니다되고 페이지는로 이동합니다 : 현재 작업에서 볼 수 있습니다 기본 링크 (방금 클릭 한 링크 대신). 하위 링크의 모든 기능을 수행하고 내 div에 대한 기본 링크를 추가하려면 어떻게해야합니까?

+1

그것. –

+1

크롬에서 작동한다는 점을 지적하고 싶습니다. – IsisCode

+0

문제점을 재현 할 수 없습니다. 링크를 Ctrl 키를 누른 상태에서 클릭하면 예상 웹 사이트에 대한 새 창이 열립니다. –

답변

1

사람들이 지적했듯이 stopPropagation은 Firefox에서 다른 브라우저와 다르게 작동합니다. 내 유일한 제안은 자신을 클릭 취급 : jsFiddle에

$('.first').click(function (e) { 
    var title = $(this).children('.main-link'); 
    var href = title.attr('href'); 
    if (e.ctrlKey) 
     window.open(href,"_blank"); 
    else 
     window.location = href; 
    return false; 
}); 

$('.first a').click(function (e) { 
    var title = $(this); 
    var href = title.attr('href'); 
    if (e.ctrlKey) 
     window.open(href,"_blank"); 
    else 
     window.location = href; 
    return false; 
});​ 

Working example.

업데이트 : 덜 중복,이를 위해 첫째 핸들러를 대체 : IE8 작업

$('.first').click(function (e) { 
    $(this).children('.main-link').click(); 
    return false; 
}); 
관련 문제