当前位置: 首页 > 面试题库 >

如何订购与jQuery绑定的事件

卢知
2023-03-14
问题内容

可以说我有一个Web应用程序,该应用程序的页面可能包含4个脚本块-我编写的脚本可能在其中一个块中找到,但我不知道哪个是由控制器处理的。

我将一些onclick事件绑定到按钮,但是我发现它们有时会按我不期望的顺序执行。

有没有办法确保订单,或者您过去如何处理此问题?


问题答案:

我花了很长时间来概括这种过程,但就我而言,我只关心链中第一个事件侦听器的顺序。

如果有什么用,这里是我的jQuery插件,它绑定一个始终在任何其他事件之前触发的事件侦听器:

更新内联jQuery更改(感谢Toskan)

(function($) {
    $.fn.bindFirst = function(/*String*/ eventType, /*[Object])*/ eventData, /*Function*/ handler) {
        var indexOfDot = eventType.indexOf(".");
        var eventNameSpace = indexOfDot > 0 ? eventType.substring(indexOfDot) : "";

        eventType = indexOfDot > 0 ? eventType.substring(0, indexOfDot) : eventType;
        handler = handler == undefined ? eventData : handler;
        eventData = typeof eventData == "function" ? {} : eventData;

        return this.each(function() {
            var $this = $(this);
            var currentAttrListener = this["on" + eventType];

            if (currentAttrListener) {
                $this.bind(eventType, function(e) {
                    return currentAttrListener(e.originalEvent); 
                });

                this["on" + eventType] = null;
            }

            $this.bind(eventType + eventNameSpace, eventData, handler);

            var allEvents = $this.data("events") || $._data($this[0], "events");
            var typeEvents = allEvents[eventType];
            var newEvent = typeEvents.pop();
            typeEvents.unshift(newEvent);
        });
    };
})(jQuery);

注意事项:

  • 尚未经过充分测试
  • 它依赖于jQuery框架的内部结构不变(仅在1.5.2下进行了测试)。
  • 它不一定会在以其他方式绑定的事件侦听器之前触发,而不是作为源元素的属性或使用jQuery bind()和其他关联函数进行绑定。


 类似资料:
  • 百度首页的“百度一下”按钮是怎么绑定的点击(click)事件的? 其中一种是使用<form>标签,这种会刷新整个页面。 我想知道的是第二种。在点击“百度一下”按钮后,会进行异步刷新,代码会进入到jquery中,但是我没有找到到底是怎么实现监听的?然后这种实现绑定,的流程也不怎么懂 jquery中的这段代码 是怎么绑定到按钮上的?或者有大佬可以告知绑定的位置。百度这个是进行测试,最想知道的是有没有办

  • 本文向大家介绍如何使用Firebug调试JavaScript / jQuery事件绑定?,包括了如何使用Firebug调试JavaScript / jQuery事件绑定?的使用技巧和注意事项,需要的朋友参考一下 假设事件处理程序已附加到您的元素。对于例如, 然后,您可以像这样调试它: 对于jQuery 1.3.x 对于jQuery 1.4.x  对于jQuery 1.8.x +

  • 本文向大家介绍jQuery事件绑定on()、bind()与delegate() 方法详解,包括了jQuery事件绑定on()、bind()与delegate() 方法详解的使用技巧和注意事项,需要的朋友参考一下 啃了一段日子的js相关了,学的过程中发现在jQuery中绑定事件时,有人用bind(),有人用on(),有人用delegate(),还有人用live(),看代码的时候觉得都实现功能了也就掀

  • 本文向大家介绍浅谈jQuery的bind和unbind事件(绑定和解绑事件),包括了浅谈jQuery的bind和unbind事件(绑定和解绑事件)的使用技巧和注意事项,需要的朋友参考一下 绑定其实就是把一些常规时间绑定到页面,然后进行各种常规操作 解绑就是接触绑定,绑定的事件失效 要注意,iQuery中的  .事件  如(.click())其实就是单个的绑定事件的简写(bind("click"))

  • 本文向大家介绍浅谈jquery之on()绑定事件和off()解除绑定事件,包括了浅谈jquery之on()绑定事件和off()解除绑定事件的使用技巧和注意事项,需要的朋友参考一下 off()函数用于移除元素上绑定的一个或多个事件的事件处理函数。 off()函数主要用于解除由on()函数绑定的事件处理函数。 该函数属于jQuery对象(实例)。 语法 jQuery 1.7 新增该函数。其主要有以下两