2010-07-17 7 views
5
<a href="<?=$rowz[0]?>" onClick="countLinks('<?=$row[6]?>','<?=$indexl?>')">[Link <?=$j++?>]</a> 

문제는 IE 또는 Firefox에서 중간 버튼과 함께 작동하지 않는다는 것입니다. 사실 가운데 버튼을 사용하는 countLinks은 크롬에서만 호출됩니다.마우스의 onClick() 및 가운데 버튼과 관련된 문제

나는 mouseup 이벤트와 같은 Jquery 함수가 필요하다고 생각하는데, 그 매개 변수로 countLinks을 호출하는 함수를 호출하는 방법을 모른다.

어떤 도움이 필요합니까?

+1

+ 1 ** rowz **. 1337! – jAndy

+0

[중 클릭을 사용하여 onclick 이벤트 트리거링] 중복 가능 (http://stackoverflow.com/questions/1795734/triggering-onclick-event-using-middle-click) – rds

답변

6

네가 맞아. 실제로 마우스 버튼을 클릭했는지 확인하려면 mousedown 또는 mouseup 이벤트가 필요합니다.

하지만 먼저 인라인 이벤트 처리기 onclick을 제거하고 번쩍 이는 자바 스크립트의 빛나는 도로를 따라 가야합니다.

그 앵커에 id 또는 class 태그를 지정해야합니다 (물론 CSS 선택기로 앵커를 선택할 수도 있습니다). 우리가 이름 myClazzz으로 클래스를 추가했다고 가정하자 :

자바 스크립트 :

$(function(){ 
    $('.myClazzz').bind('mouseup', function(e){ 
     switch(e.which){ 
      case 1: 
       alert('Left Mouse button pressed.'); 
      break; 
      case 2: 
       alert('Middle Mouse button pressed.'); 
      break; 
      case 3: 
       alert('Right Mouse button pressed.'); 
      break; 
      default: 
       alert('You have a strange Mouse!'); 
     } 
    }); 
}); 

mousebutton 클릭 한 나타내는 숫자를 포함하는 mousedown/mouseup 이벤트 핸들러 내 which 속성입니다.

+2

+1 하지만 클릭하지 않는 이유는? 클릭 한 버튼이 왼쪽, 중간 또는 오른쪽 인지도 확인할 수 있습니다 ... 마우스 클릭 마우스의 동작이 다르게 나타날 수 있습니다. 크로스 브라우저. – Sinan

+0

@Sinan Y .: javascript'click' 이벤트는'mousedown' +'mouseup'과 왼쪽 버튼 클릭에서만 발생합니다. – jAndy

+0

uhm ... 그래서 각 케이스 (1-2-3) 같은 기능의 복사본을 넣어야합니까? 어떻게 그 함수에 매개 변수 ($ row [6]와 $ indexl과 같은)를 전달할 수 있습니까? – markzzz

2

다음은 html5 attributes 일부를 사용하여 간단한 해결책입니다 ... 실제로 html5 이전에도 가능했지만 유효성을 검사하지 않았습니다. 우리가 data에 매개 변수를 넣어 _here

<a class="myClazzz" href="<?=$rowz[0]?>" data-row="<?=$row[6]?>" data-index="<?=$indexl?>">...</a>

속성이 같은 JS 쓰기 :

나는 아래로의 링크를 만들 것

$(function(){ 
    //use mouseup, then it doesn't matter which button 
    //is clicked it will just fire the function 
    $('.myClazzz').bind('mouseup', function(e){ 
     //get your params from data attributes 
     var row = $(this).attr("data-row"), 
      index = $(this).attr("data-index"); 

     //and fire the function upon click 
     countLinks(row,index); 
    }); 
}); 
//don't forget to include jquery, before these lines;) 

희망이 있습니다. 티. 시안.

PSmyClazzz -> 크레딧 jAndy로 이동합니다 :)

+0

uoo. .. 링크 (데이터 - var stat 의미)에 그 구문 앞에 본적이 없다. 나는 그것을 배울 필요가있다 :) 내일 나는 그 기능을 점검 할 것이다, italy (오전 3시)에 조금 늦었다! tyx man – markzzz

+4

FYI :'$ (this) .data ('row')'는'$ (this) .attr ('data-row')와 같다. – WildlyInaccurate

1

이의 동작이 브라우저에 의해 매우 변수입니다. https://code.google.com/p/chromium/issues/detail?id=255#c106을 참조하십시오. 그에 따르면, 사람의 당신에 대한 질문 :

  • "IE는 대상이 링크의 경우 클릭 이벤트가 발생하지 않지만,이 경우 다른 요소가의 후손 경우에도 클릭 화재 않습니다 링크."

  • "Gecko는 거품이있는 문서에서 클릭 이벤트를 항상 발생시키고 은 클릭되는 요소를 대상으로합니다."

    파이어 폭스

는, 그래서 당신이 할 수 있습니다. 트릭 (일반적으로이 링크 자체에 대한 이벤트를 수신 할),하지만 작동의 종류

$(document).click(
    function (evt) { 
    // ... evt.which === 2 means middle click 
    } 
); 

관련 문제