【问题标题】:how to use/call this function in javascript/jquery?如何在 javascript/jquery 中使用/调用这个函数?
【发布时间】:2012-02-17 09:00:58
【问题描述】:

我对 jquery/javascript 非常陌生。所以在这里,我找到了这个用于向下滑动和向上滑动的 js 代码。但是不知道怎么用,也不知道怎么调用。

js代码:

   (function() {
 // initializes touch and scroll events
    var supportTouch = $.support.touch,
            scrollEvent = "touchmove scroll",
            touchStartEvent = supportTouch ? "touchstart" : "mousedown",
            touchStopEvent = supportTouch ? "touchend" : "mouseup",
            touchMoveEvent = supportTouch ? "touchmove" : "mousemove";

// handles swipeup and swipedown
    $.event.special.swipeupdown = {
        setup: function() {
            var thisObject = this;
            var $this = $(thisObject);

            $this.bind(touchStartEvent, function(event) {
                var data = event.originalEvent.touches ?
                        event.originalEvent.touches[ 0 ] :
                        event,
                        start = {
                            time: (new Date).getTime(),
                            coords: [ data.pageX, data.pageY ],
                            origin: $(event.target)
                        },
                        stop;

                function moveHandler(event) {
                    if (!start) {
                        return;
                    }

                    var data = event.originalEvent.touches ?
                            event.originalEvent.touches[ 0 ] :
                            event;
                    stop = {
                        time: (new Date).getTime(),
                        coords: [ data.pageX, data.pageY ]
                    };

                    // prevent scrolling
                    if (Math.abs(start.coords[1] - stop.coords[1]) > 10) {
                        event.preventDefault();
                    }
                }

                $this
                        .bind(touchMoveEvent, moveHandler)
                        .one(touchStopEvent, function(event) {
                    $this.unbind(touchMoveEvent, moveHandler);
                    if (start && stop) {
                        if (stop.time - start.time < 1000 &&
                                Math.abs(start.coords[1] - stop.coords[1]) > 30 &&
                                Math.abs(start.coords[0] - stop.coords[0]) < 75) {
                            start.origin
                                    .trigger("swipeupdown")
                                    .trigger(start.coords[1] > stop.coords[1] ? "swipeup" : "swipedown");
                        }
                    }
                    start = stop = undefined;
                });
            });
        }
    };

//Adds the events to the jQuery events special collection
    $.each({
        swipedown: "swipeupdown",
        swipeup: "swipeupdown"
    }, function(event, sourceEvent){
        $.event.special[event] = {
            setup: function(){
                $(this).bind(sourceEvent, $.noop);
            }
        };
    });

})();

这是我要使用上述代码触发的锚元素

<a href="<?php echo base_url();?>home/drop_down" id="swipedown"></a>

试过这样调用函数:

$('#swipedown').live('swipedown', function(event, data){
                    alert('swipes')
            });

但它没有提示我警报。 >.<.>

【问题讨论】:

  • 在你找到插件的地方没有文档吗?
  • 代码是自执行的。这意味着一旦加载脚本,这个函数就会被执行。它正在将 swipeupdown 事件添加到 jQuery 事件集合中。
  • @scott 我没有找到任何文档,这里是链接:snipt.net/blackdynamo/…
  • @zladuric 我怎么称呼它?或使用它?真的不知道该怎么做。
  • 嗯,不是很喜欢 jQuery。但是如果它正在监听 swipeupdown 事件,也许你可以尝试在时间线的某个地方手动触发它们来测试?比如 $("#someid").trigger("swipeupdown");?

标签: javascript jquery jquery-mobile


【解决方案1】:

最后一个 () 在创建后调用该函数。该函数为 jquery 增加了新的可能性。所以你可能可以称之为:

$('#swipedown').bind('swipedown', function(e){
    alert('test');
});

【讨论】:

  • 尝试了您的代码,但仍然没有响应,但是当我将其绑定到单击事件时,它会触发警报。这非常令人沮丧。
  • 你也可以尝试在setup: function() {后面加一个alert,这样至少你知道是事件被绑定但不起作用,还是事件根本没有被绑定。跨度>
  • 尝试在 js 函数中添加警报,它确实提示了我,所以它确实在加载 js 文件,但我仍然无法使用它/调用它。呸。 $(窗口)是什么意思?你是在暗示这个: $(window).bind('swipedown', function(e){.... ?
  • 是的,我就是这个意思。但是,如果调用了 setup 函数,则意味着插件应该可以工作。也许它只是不是一个好的插件。您可以搜索另一个,或尝试解决此问题..
  • 我正在寻找一个 javascript/jquery 脚本,它可以像在 IOS 或 android 的本机应用程序中一样处理向下滑动。你有没有遇到过这样的事情?
【解决方案2】:

您的代码将被添加(如文档所示)到jQuery events special collection,这意味着您可以调用swipeupswipedown 作为任何其他jQuery 事件。

示例:

$("div p").live('swipedown',function() {
  alert("swiped down");
});

这将在p 元素发生向下滑动操作时触发,例如:

<body>
 <div>
  <h1>hello world</h1>
  <p>pull me down</p>
 </div>
</body>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多