변경

2013-06-19 2 views
5

페이지를 감지 할 때 나는 ondblclick 이벤트 onclick을에 이벤트를 변경할 수 있습니다 어떻게 자사의 IOS/안드로이드 등 어려운 난 그냥 ID를 호출 할 수 없습니다 무엇 있습니다 데이터베이스의 데이터를 Javascript 함수로 전달하므로 요소의변경

확인해보십시오.

서버 측 :

<?php   
echo '<table>'; 
while($row=mysql_fetch_array($query)){ 
    echo '<tr><td ondblclick="sampFunc("'.$row[0].'","'.$row[1].'")">'; 
     echo $row[0]; 
    echo '</td></tr>'; 
} 
echo '</table>'; 
?> 

클라이언트 측 :

<script> 
$(document).ready(function(){ 
    if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){ 
     /* ?????????????????? */ 
    } 
}); 
function sampFunc(data1,data2){ 
    //-- Something 
} 
</script> 
+1

:

<script> var touchDevice = !!('ontouchstart' in window) || !!('onmsgesturechange' in window); $(document).ready(function(){ var dblevent = touchDevice ? 'click' : 'dblclick'; $('.myclass td').on(dblevent, function(){ var data1 = $(this).data('a'), data2 = $(this).data('b'); //-- Something }); }); </script> 

하거나 업데이트 된 PHP와 doubletap 이벤트를 사용 그에 따라 출력? $ _SERVER [ 'HTTP_USER_AGENT'] 값을 확인하십시오. – Drew

+0

나는 그 중 하나 =) 나는 그것을 감사드립니다주지. – Markipe

+0

@Markipe - 나는 사용자 에이전트 스니핑에 대해 조언하지 않았으며 이유에 대해 여기에서 읽는다 : [사용자 에이전트를 사용한 브라우저 탐지] (https : //developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent). 또한, 내가 어떻게 그것을 권장하는 방법에 대한 예를 들어 그냥 내 대답을 참조하십시오 :) – Joe

답변

0

난 당신이 쉽게 당신이 원하는 것을 달성 할 수 있도록 당신이 코드의 일부를 다시 작성해야한다고 생각 .

스 니프 시도 사용자 에이전트는 좋은 생각이 아닙니다. 장치가 변경 될 수 있고, 새로운 OS가 시작될 수 있으며, 더 많은 유지 보수가 필요합니다. 기능 탐지는 현재 및 미래의 장치뿐만 아니라 오 탐지 (false positives)를 최소화하므로 훨씬 나은 접근 방법입니다.

는 업데이트 PHP 이제 HTML5 data-* 특성을 사용하여 인라인 이벤트를 제거한다 : 그것은 터치 기기의 가변 touchDevicetrue 또는 false이 인에 따라 정의

<?php   
echo '<table class="myclass">'; 
while($row=mysql_fetch_array($query)){ 
    echo '<tr><td data-a="'.$row[0].'" data-b="'.$row[1].'">'; 
     echo $row[0]; 
    echo '</td></tr>'; 
} 
echo '</table>'; 
?> 

새로운 JS의 여부를 체크한다. 그런 다음이 var를 사용하여 이벤트를 정의합니다. 기기가 true (터치 가능) 인 경우 click이 이벤트이며, 그렇지 않은 경우 dblclick입니다.

이벤트 처리기는 이제 .on()을 사용하여 인라인으로 정의하지 않고 .data() 함수를 사용합니다. 당신이 PHP에서 그것을 확인하고 바로 코드를 변경할 수 있습니다 때 기다렸다가 클라이언트 측에서 장치 유형을 확인해야 할 이유

$('.myclass td').on('dblclick doubletap', function(){ 
     var data1 = $(this).data('a'), data2 = $(this).data('b'); 
     //-- Something 
}); 
+0

미안, 조, 난 그냥 PHP $ _SERVER [ 'HTTP_USER_AGENT']와 함께 흥분했다. 어쨌든 나는 그저 아주 훌륭하고 인상적인 솔루션을 사용해 보았습니다. 너를위한 두 엄지. 고마워요. – Markipe

+1

@Markipe - 고마워, 그건 아무 문제 없어 :) 방금 내가 너에게 대안을 보여줄 줄 알았다. – Joe