te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Extend jQuery's .on() to work with mobile touch events - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Extend jQuery's .on() to work with mobile touch events - Stack Overflow

programmeradmin3浏览0评论

I am attempting to use the jQuery mobile events without the rest of jQuery mobile.

.mobile.events.js

That snippet enables them all, and works fine, but not with the .on() event handler. E.g:

$('a').on('tap',function(){
    console.log('Hi there!');
});

However it does work with .live(), but that is now depreciated.

So my question; is there a a way to extend the .on() functionality to include the tap event and others? Full list below:

  • touchstart
  • touchmove
  • touchend
  • orientationchange
  • tap
  • taphold
  • swipe
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Thanks :)

I am attempting to use the jQuery mobile events without the rest of jQuery mobile.

https://github./jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

That snippet enables them all, and works fine, but not with the .on() event handler. E.g:

$('a').on('tap',function(){
    console.log('Hi there!');
});

However it does work with .live(), but that is now depreciated.

So my question; is there a a way to extend the .on() functionality to include the tap event and others? Full list below:

  • touchstart
  • touchmove
  • touchend
  • orientationchange
  • tap
  • taphold
  • swipe
  • swipeleft
  • swiperight
  • scrollstart
  • scrollstop

Thanks :)

Share Improve this question asked Feb 16, 2012 at 12:14 willwill 4,5756 gold badges34 silver badges33 bronze badges 2
  • The selector for on() needs to be a parent ... read the help for on() its very simple ... – Manse Commented Feb 16, 2012 at 12:33
  • Cool extraction, but how up to date is it? Thinking 11 months old is pretty old at this point, is anyone maintaining this file? – rball Commented Apr 13, 2012 at 16:01
Add a ment  | 

2 Answers 2

Reset to default 9

However it does work with .live(), but that is now depreciated.

So I take it that you want to use event delegation to preserve those events on replaced elements. That would mean that this:

$('a').on('tap',function () {
    console.log('Hi there!');
});

would need to change to something like:

$(document).on('tap', 'a', function () {
    console.log('Hi there!');
});

in order for it to behave the same as $("a").live("tap", ...

Maybe it should be better to extend the JQuery event code for mobile and desktop.

One way to do this is to use the JQuery vmouse (virtual mouse) plugin.

From vmouse plugin ments:

// This plugin is an experiment for abstracting away the touch and mouse
// events so that developers don't have to worry about which method of input
// the device their document is loaded on supports.
//
// The idea here is to allow the developer to register listeners for the
// basic mouse events, such as mousedown, mousemove, mouseup, and click,
// and the plugin will take care of registering the correct listeners
// behind the scenes to invoke the listener at the fastest possible time
// for that device, while still retaining the order of event firing in
// the traditional mouse environment, should multiple handlers be registered
// on the same element for different events.
//
// The current version exposes the following virtual events to jQuery bind methods:
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"

For a better explanation, see https://coderwall./p/bdxjzg

vmouse plugin: https://github./jquery/jquery-mobile/blob/master/js/jquery.mobile.vmouse.js

Also see this link about current state of (touch) events: http://blogs.adobe./adobeandjquery/2011/03/07/the-current-state-of-touch-events/

发布评论

评论列表(0)

  1. 暂无评论