當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


JQuery Mobile vclick用法及代碼示例

vclick event

添加的版本:1.0

說明:虛擬化點擊事件處理程序。

  • jQuery( ".selector" ).on( "vclick", function( event ) { ... } )

我們提供了一組"virtual" 鼠標事件,它們試圖抽象出鼠標和觸摸事件。這允許開發人員為基本鼠標事件注冊偵聽器,例如 mousedown、mousemove、mouseup 和 click,並且插件將負責在幕後注冊正確的偵聽器,以便在盡可能快的時間內為該設備調用偵聽器.在觸摸環境中,該插件保留了在傳統鼠標環境中看到的事件觸發順序,例如,vmouseup 總是在 vmousedown 之前調度,vmousedown 在 vclick 之前調度,等等。虛擬鼠標事件還規範了坐標信息的提取方式事件,因此在基於觸摸的環境中,可以直接在事件對象上從 pageX、pageY、screenX、screenY、clientX 和 clientY 屬性中獲得坐標。

jQuery Mobile "vclick" 事件處理程序模擬移動設備上的"onclick" 事件處理程序。

這個插件擴展了 jQuery 的內置方法。如果沒有加載 jQuery Mobile,調用 .vclick() 方法可能不會直接失敗,因為該方法仍然存在。但是,不會發生預期的行為。

$( document ).on( "vclick", "p", function() {
  $( this ).append( "<span style='color:#108040;'> vclick fired... </span>" );
  });

效果演示

警告:謹慎使用 vclick

在觸摸設備上謹慎使用 vclick。基於 Webkit 的瀏覽器在 touchend 事件被調度後大約 300 毫秒合成 mousedownmouseupclick 事件。合成鼠標事件的目標是在它們被調度時計算的,並且基於觸摸事件的位置,在某些情況下,實現特定的啟發式方法會導致不同設備甚至不同操作係統版本上的不同目標計算相同的設備。這意味著原始觸摸事件中的目標元素可能與合成鼠標事件中的目標元素不同。

我們建議使用click 而不是vclick,隻要觸發的操作有可能更改屏幕上觸摸點下方的內容。這包括頁麵轉換和其他行為,例如可能導致屏幕移動或內容被完全替換的折疊/展開。

取消元素的默認點擊行為

應用程序可以在 vclick 事件上調用 preventDefault() 以取消元素的默認單擊行為。在基於鼠標的設備上,對vclick 事件調用preventDefault() 等同於在氣泡事件階段對真實click 事件調用preventDefault()。在基於觸摸的設備上,它有點複雜,因為實際的 click 事件在 vclick 事件被調度後大約 300 毫秒被調度。對於觸摸設備,在 vclick 事件上調用 preventDefault() 會觸發 vmouse 插件中的一些代碼,該代碼會在捕獲事件階段嘗試捕獲由瀏覽器調度的下一個 click 事件,並調用 preventDefault()stopPropagation() 就可以了。正如上麵警告中提到的,有時很難將觸摸事件與其相應的鼠標事件匹配,因為目標可能不同。出於這個原因,vmouse 插件也回退到嘗試通過坐標識別相應的click 事件。仍然存在目標和坐標識別都失敗的情況,這會導致 click 事件被調度並觸發元素的默認操作,或者在內容已被移動或替換的情況下,觸發不同的點擊元素。如果給定元素/控件經常發生這種情況,我們建議您使用click 來觸發您的操作。

也可以配置虛擬鼠標事件:

  • $.vmouse.moveDistanceThreshold (default: 10px) - 超過這個,那就是一個滾動事件。調用 vmousecancel 事件並取消 TouchMove 事件。
  • $.vmouse.clickDistanceThreshold(默認值:10px)- 如果 vclick 事件已被捕獲並且在阻止列表中,則忽略小於此距離的 vclick。
  • $.vmouse.resetTimerDuration (default: 1500ms) - 比這更多的時間,那麽它不是一個觸摸事件。滾動,TouchMove 和 TouchEnd 事件使用它。阻止列表被清除。

相關用法


注:本文由純淨天空篩選整理自jquerymobile.com大神的英文原創作品 vclick。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。