Tag: 事件处理

使用jQuery在链接上重新触发click事件

我有一个页面(asp.net),我在其中捕获链接的单击事件。 然后我做一些脏检查并向用户显示一个对话框, $(function() { var clickedLink; $(‘.checkdirty’).click(function(event) { if(isDirty == false){ return true; } clickedLink = $(this); $(‘#dirtysave-dialog’).dialog(‘open’); return false; }); }); 你想失去你的改变是/否等 $(‘#dirtysave-dialog’).dialog({ bgiframe: true, autoOpen: false, height: 125, width: 425, modal: true, title: “You have unsaved changes, do you want to continue and loose changes?!!”, buttons: { “Yes”: function() { isDirty = false; […]

为什么“事件”在Chrome中全球可用,而不是FF?

在处理另一个问题的答案时,出现了一个奇怪的错误,该错误与匿名函数中可用的event对象相关而没有被传入。在Chrome中,下面的工作正常,但FF会抛出错误。 $(document).ready(function() { $(“#uspsSideboxTrackingClose”).click(function() { event.preventDefault(); console.log(event); }); }); 铬: 火狐: ReferenceError:未定义事件 众所周知 $(“#uspsSideboxTrackingClose”).click(function(event) { .. } 适用于两种浏览器。 这是违规代码。 这是Chrome或FF的错误,还是两种浏览器的预期行为? 哪个浏览器是对的?

jQuery是否保留触摸事件属性?

虽然此代码在触摸屏幕时产生预期的“1”行为: document.getElementById(‘someNodeId’).addEventListener(‘touchmove’, touch, true); function touch(evt) { evt.preventDefault(); alert(evt.changedTouches.length); } 使用jQuery选择器的相同代码: $(‘#someNodeId’).bind(‘touchmove’, touch); 产生错误:“TypeError:表达式结果’evt.changedTouches'[undefined]不是对象”。 (Device = iPod Touch OS 3.1.3(7E18); jQuery 1.4.2)。 这怎么可能,我做错了什么?

事件不在动态创建的元素上

我正在试着弄清楚为什么mouseover事件不能与.on处理程序一起使用ajax动态创建的元素。 似乎唯一有效的是带有.live的代码,但我知道它已被弃用。 $(“.dropdown ul li”).live(“mouseover”, function() { alert(‘mouseover works’); }); 但是,当我尝试使用.on时,无论我尝试什么变化(document.ready,.mouseover等等)都无法使用。 $(“.dropdown ul li”).on(“mouseover”, function() { alert(‘mouseover works’); }); 事件处理程序位于代码的底部,因此它们最后执行。 任何人都知道我做错了什么?

将多个键绑定到按键事件

我目前正在使用此Javascript kepypress代码在按键时触发事件: $(document).keydown(function(e) { switch(e.keyCode) { case 39: e.preventDefault(); alert(“Arrow Key”); break; case 37: e.preventDefault(); alert(“Arrow Key”); } }); 但我想知道的是,如果我可以而不是绑定一个键绑定两个键的组合。 我可以这样做: $(document).keydown(function(e) { switch(e.keyCode) { case 39 && 37: e.preventDefault(); alert(“Arrow Key”); break; } });

触摸移动卡住忽略尝试取消触摸移动

我正在搞乱触摸滑块上的触摸事件,我不断收到以下错误: 忽略尝试取消具有cancelable = false的touchmove事件,例如因为滚动正在进行且无法中断。 我不确定是什么导致了这个问题,我不熟悉触摸事件,似乎无法解决这个问题。 以下是处理触摸事件的代码: Slider.prototype.isSwipe = function(threshold) { return Math.abs(deltaX) > Math.max(threshold, Math.abs(deltaY)); } Slider.prototype.touchStart = function(e) { if (this._isSliding) return false; touchMoving = true; deltaX = deltaY = 0; if (e.originalEvent.touches.length === 1) { startX = e.originalEvent.touches[0].pageX; startY = e.originalEvent.touches[0].pageY; this._$slider.on(‘touchmove touchcancel’, this.touchMove.bind(this)).one(‘touchend’, this.touchEnd.bind(this)); isFlick = true; window.setTimeout(function() { isFlick = false; […]

从父框架触发iframe内的元素上的事件处理程序

我有一个HTML页面。 在其中我使用jQuery在链接上附加click事件。 然后我使用iframe从另一个页面引用这个html页面。 但是我无法触发与js链接的事件(当我用鼠标单击链接时,事件被触发没有问题)。 如何从父框架触发该事件? 我尝试了以下但它不起作用: var frame = $(‘#mainFrame’); // the iframe I am trying to access var link = $(‘a.btn’, frame.contents()); // the element is found correctly link.trigger(‘click’); // nothing happens. var e = link.data(‘events’); // e is undefined.

使用本机Javascript实现jQuery的“实时”绑定器

我试图弄清楚如何将事件绑定到动态创建的元素。 我需要事件在元素被销毁和重新生成后仍然存在。 显然,使用jQuery的live函数很容易,但是它们看起来像是用原生Javascript实现的?

jquery mousewheel:检测车轮何时停止?

我正在使用Jquery 鼠标滚轮插件,我希望能够检测用户何时完成使用滚轮。 与可拖动内容中的stop:event类似的function。 有人能指出我正确的方向吗?

替代jQuery的支持eventData的.toggle()方法?

.toggle()方法的jQuery文档指出: 提供.toggle()方法是为了方便起见。 手动实现相同的行为相对简单,如果.toggle()中内置的假设certificate是有限的,这可能是必要的。 内置到.toggle的假设已certificate限制了我当前的任务,但文档没有详细说明如何实现相同的行为。 我需要将eventData传递给提供给toggle()的处理程序函数,但似乎只有.bind()才支持这个,而不是.toggle() 。 我的第一个倾向是使用一个全局的标志来处理单个处理函数来存储点击状态。 换句话说,而不是: $(‘a’).toggle(function() { alert(‘odd number of clicks’); }, function() { alert(‘even number of clicks’); }); 做这个: var clicks = true; $(‘a’).click(function() { if (clicks) { alert(‘odd number of clicks’); clicks = false; } else { alert(‘even number of clicks’); clicks = true; } }); 我没有测试后者,但我怀疑它会起作用。 这是做这样的事情的最佳方式,还是有更好的方式让我失踪? 谢谢!