Tag: 事件处理

jQuery – 如何在动画或函数运行时删除事件处理程序?

我正在尝试创建一个图库。 在底部我有一条缩略图,这些缩略图在您单击箭头时左右滑动,但如果您多次单击箭头则会询问该function。 我想在运行函数时删除单击处理程序,然后再次替换它。 在旁注中,我的缩略图滚动条使用margin-left来设置动画,是否可以使用scrollTo或类似方法,以水平方式移动元素特定量,因此如果缩略图改变大小,它仍然可以工作?

jquery为数组中的对象添加事件处理程序

基于此,我试图通过编写以下内容将click事件处理程序添加到对象数组: function addEventHandler(array, type, func) { var len = array.length; for (var i = 0; i div .section’) addEventHandler(sections, ‘click’, function() { console.log(this); }); 但是,我收到错误消息: array[i].bind is not a function 我只能在绑定方法上使用实际选择器吗? 有什么建议?

全局过滤ajax成功处理程序

我正在开发单页ASP.NET MVC 3应用程序。 所有post都是通过ajax调用完成的。 用户几乎可以看到页面上的所有内容,但有些操作需要用户登录。 如果某个操作需要登录,我会返回一个JSON {unauthenticated: true}如果用户没有登录。所以我有几个成功的处理程序,如: success : function(response){ if(response.unauthenticated){ showLoginDialog(); } else { doTheActualWork(); } } 我想在全局成功处理程序中执行此操作。 喜欢: $(document).ajaxSuccess(function (event, XMLHttpRequest, ajaxOptions){ if(unauthenticated()){ preventTheLocalSuccess(); showLoginDialog(); } }); 本地成功处理程序将是: success: function(response){ // No Checking doTheActualWork(); } 有没有办法做到这一点?

”,该函数应该仍然返回false?" >

使用jQuery的animate(),如果点击的元素是“ ”,该函数应该仍然返回false?

我正在阅读jQuery的animate()页面 http://api.jquery.com/animate/ 它的例子没有提到是否使用 click me … $(‘#clickme’).click(function() { $(‘#someDiv’).animate({left: “+=60”}); }) 我们实际上仍然需要像过去那样回归虚假? $(‘#clickme’).click(function() { $(‘#someDiv’).animate({left: “+=60”}); return false; }) (但是,那些例子没有使用作为“点击我”…但是使用了别的东西。 否则页面会跳回到页面的开头? jQuery有更优雅或神奇的方式吗?

使用jQuery规范化Code​​Mirror OnKeyEvent

我正在使用CodeMirror和jQuery在宠物PoC项目上提供语法高亮。 它一直很好,直到我意识到CodeMirror似乎正在捕获DOM上的按键事件,这样当我正在键入一个支持CM的textarea时,它会阻止全局应用程序热键工作。 为简单起见,我们假设我的页面上有以下监听器: var hotkey = function (e) { if (e.shiftKey) { alert(‘foo’); } }; $(document).keypress(hotkey); 这可以在页面的任何地方使用,除非我有焦点的CM textarea。 为了试图解决这个问题,我尝试使用CM的onKeyEvent选项,并尝试使用jQuery.Event规范化CM的处理程序传递的event对象, jQuery.Event所示: var cm = CodeMirror.fromTextArea(someTextArea, { onKeyEvent : function (editor, event) { hotkey($.Event(event)); } }); 这成功地将keydown和keypress事件传递给我的hotkey处理程序。 问题是,“规范化” event对象似乎没有足够的规范化,因为在hotkey范围中引用一些微不足道的东西会返回undefined返回e.shiftKey 。 (我确实正确地将e.type作为keydown或e.type获得,所以我知道我正在传递一个event对象。) 在这里我有什么东西可以导致我的event缺少属性,或者我只是搞砸了? 我当然可以加倍回访并访问原始事件属性,但是,嘿,我真的很想能够像我所需要的那样,使用jQuery规范化对象和下一个人(并且浏览器不可知论只是一个开始)它)。

音频事件不会在播放事件上触发jquery

我尝试在音频play事件上执行一个函数: jQuery(‘audio’).on(‘play’, function () { /* … */ }); 但是我的元素在执行此函数时不存在,因此未选中它。 相反,当我需要为动态添加内容触发事件时,我有习惯使用不同的语法: jQuery(‘.constant-container’).on(‘play’, ‘audio’, function () { /* … */ }); .constant-container不会改变的地方。 但是这个解决方案似乎不起作用,音频元素也没有得到任何click事件。 这是bin的链接 。 前4个音频正确处理事件,但不是最后4个。

如何判断滚动窗格在javascript中滚动的方式?

我有以下jquery来处理特定div上的滚动事件并写一些内容: $(‘#myDiv’).scroll(function(eventData) { if(eventData.isGoingUp) $(‘#myDiv’).prepend(‘Going up.’); else $(‘#myDiv’).append(‘Going down.’); }); 显然, evt.isGoingUp实际上并不存在。 有没有可以实现这种逻辑的东西?

jQuery的click()函数如何比addEventListener()快得多?

我确信我们都看过vanilla-js的网站 (最快的JavaScript框架); D和我只是很好奇,确切地说,在为点击添加事件处理程序时,普通JavaScript比jQuery快多少。 所以我前往jsPerf进行测试,我对结果感到非常惊讶 。 jQuery的表现优于普通JavaScript超过2500% 。 我的测试代码: //jQuery $(‘#test’).click(function(){ console.log(‘hi’); }); //Plain JavaScript document.getElementById(‘test’).addEventListener(‘click’, function(){ console.log(‘hi’); }); 我只是无法理解这是怎么发生的,因为似乎最终jQuery最终必须使用与普通JavaScript使用的完全相同的function。 有人可以解释为什么会发生这种情况吗?

preventDefault()不能处理Firefox 9.0.1中的SELECT元素

我意识到还有其他一些关于preventDefault()无法使用Firefox的问题,但是他们没有帮助我。 我有三个SELECT列表,我想要的是使用箭头键在它们之间导航而不更改任何值 。 该代码在Chrome中运行良好,但在Firefox中,它会移动焦点,然后更改刚刚移动到的元素的值。 JavaScript的: $(document).ready(function () { $(‘.myinput’).keydown(function (evt) { onkeydown(evt); }); $(‘.myinput:first’).focus(); }); function onkeydown(evt) { evt.preventDefault(); console.log(evt.which); if(evt.which == 39) { $(document.activeElement).next().focus(); } else if(evt.which == 37) { $(document.activeElement).prev().focus(); } } HTML: One Two Three One Two Three One Two Three

如何为新注入的html附加jquery事件处理程序?

如果还没有生成HTML,我将如何使用.on() ? jQuery页面说 如果将新HTML注入页面,请在将新HTML放入页面后选择元素并附加事件处理程序。 但我不确定该怎么做。 有没有办法“重新加载”事件处理程序? 所以,如果我有 $(document).ready(function(){ $(‘.test’).on(‘click’, function(){ var id = $(this).attr(‘id’); console.log(“clicked” + id); }); generatePage(); }); 其中generatePage()用.test创建了一堆div,我将如何重新绑定.on() ? 我知道有类似的问题已被问到,但是在快速搜索之后我找不到我想要的东西。