2013-06-19 39 views
5

sayfa algıladığında ben OnDblClick olay onclickolayı değiştirmek nasıl ki onun üzerinde IOS/Android vb zor Sadece kimliği arayamam nedir yapar elementin veri tabanından Javascript fonksiyonuna taşınmasından dolayı.Değişim

Bunu kontrol edin.

Sunucu tarafı:

<?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>'; 
?> 

İstemci taraflı:

<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> 

veya basitçe güncellenmiş PHP ve doubletap olay kullanın buna göre çıktınız mı? $ _SERVER ['HTTP_USER_AGENT'] değerine bakın. – Drew

+0

Ben bunu bilmiyordum bir =) Ben bir şans vereceğim .. – Markipe

+0

@Markipe - Kullanıcı Aracısı koklama tavsiye etmem, nedenleri için burada okumak neden: [Kullanıcı aracısını kullanarak tarayıcı algılama] (https : //developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent). Ayrıca, bunu nasıl yaptığımı bir örnek için sadece benim cevabımı görürüm :) – Joe

cevap

0

Ben daha kolay istediğini elde etmek için yapmak size kod bazı yeniden yazmak gerektiğini düşünüyorum .

sniff yerine kullanıcı aracısı harika bir fikir değildir. Cihazlar değişebilir, yeni işletim sistemi başlatılabilir ve sizin için daha fazla bakım gerektirir. Özellik tespiti, şimdi ve gelecekte aygıtları kapsadığı ve yanlış pozitifleri en aza indirdiği için çok daha iyi bir yaklaşımdır.

güncellenmiş PHP artık, HTML5 data-* özelliği kullanılıyor ve satır içi olay kaldırır: Bir dokunmatik cihaz var ve değişken touchDevicetrue olarak veya false görevin hangi bağlı tanımlar

<?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>'; 
?> 

yeni JS olup olmadığını kontrol eder. Bu var, daha sonra olayı tanımlamak için kullanılır. true (cihaz dokunmatik özellikli) ise, click olaydır, aksi halde dblclick olur.

Olay işleyicisi artık satır içi tanımlanmak yerine .on() kullanıyor ve .data() işlevini kullanıyor. Eğer PHP onu kontrol etmek ve sadece kodunu değiştirmek zaman bekleyip istemci tarafında cihaz türünü kontrol etmek var Neden

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

üzgünüm joe, sadece php $ _SERVER ['HTTP_USER_AGENT'] ile heyecanlandım. Her neyse çözümünüzü çok iyi ve etkileyici bir şekilde denedim. Senin için iki başparmak. Teşekkürler .. – Markipe

+1

@Markipe - teşekkürler, sorun değil :) Ben sadece size bir alternatif göstereyim diye düşündüm. – Joe