Tag: 事件处理

event.preventDefault()没有取消jQuery Mobile中的链接方向

背景 我一直在努力解决这个愚蠢的小问题,试图在jQuery Mobile应用程序中的一个锚元素上触发click事件时取消链接方向。 假设我有一个简单的多页文档,如下所示: page 2 ……和这样的JavaScript: (function (MyApp, $, undefined) { ‘use strict’; // Initializes app function init() { $(‘#mLink’).on(‘click’, function (event) { event.preventDefault(); //event.stopPropagation(); //event.stopImmediatePropagation(); }); } // jQuery Mobile is ready now -> override defaults $(document).on(“mobileinit”, function () { // Set the default page transition $.mobile.defaultPageTransition = ‘slide’; }); // jQuery Mobile […]

如何在jQuery中制作实时自定义事件

jQuery有一个非常方便的事件绑定器,名为live(),它将动态地向DOM元素添加事件(即使是稍后将添加到DOM的元素)。 问题是它只适用于特定事件( 在文档中列出 )。 我真的希望现在有直播,模糊和变化的直播活动。 此外,如果我可以制作实时自定义事件,它将成为我的应用程序的重大改变。 我现在拥有的大部分代码都专门用于重新绑定旧事件(更改,焦点和自定义事件以使项目可拖动或可resize)到通过ajax添加的新dom元素。 任何的想法? 我想事件授权是要走的路,但我现在它会使代码更复杂。 也许是一个处理事件代理的插件……不确定。 帮我找到解决方案。

我怎样才能模仿stopImmediatePropagation()的行为(不使用jquery)

我正在研究Javascript库的事件处理代码,我正在尝试实现类似于stopImmediatePropagation()的东西,它也适用于IE 6。 事件处理当前的工作方式是,我们的事件处理代码向对象注册,然后用户使用我们的事件处理程序注册所有事件。 我尝试模拟stopImmediatePropagation()的第一种方法是简单地将该方法添加到事件中(如果它尚不存在): if (event != null && event.isImmediatePropagationEnabled == null) { event.stopImmediatePropagation = function () { this.isImmediatePropagationEnabled = false; }; event.isImmediatePropagationEnabled = true; event.isImmediatePropagationStopped = function () { return !this.isImmediatePropagationEnabled; }; } 当调用用户的事件处理程序回调时,它们将被传递到我们获得的相同事件对象中。 如果他们愿意,他们可以在事件上调用stopImmediatePropagation()。 当我们循环遍历我们注册的所有事件处理回调时,我们每次检查传播布尔值: given some event for [all the callbacks] { if (event != null && event.isImmediatePropagationStopped != null && event.isImmediatePropagationStopped()) […]

jQuery卸载事件仅用于关闭窗口而不用于链接导航

我在关闭页面时使用此代码注销用户,但用户也会在点击其他链接(同一网站)时注销: $( window ).unload(function() { $.ajax({url:”?logout&leave=yes”, async:false}) }); 有没有办法区分链接导航和真实页面关闭? 编辑: 我目前正在实施此解决方案,但它缺乏检测页面重新加载 $(‘a’).click(function(){ var url = $(this).attr(“href”); window.onbeforeunload = null; $(window).unbind(‘beforeunload’); window.location = url; });

Javascript将密钥代码发送到元素

我无法弄清楚如何在textarea元素上触发keydown事件,例如想象我有两个textarea元素,当我在第一个中键入内容时,我希望第二个框也显示输入,但是对于某个我必须通过活动来做到这一点。 这是我尝试过的,它不起作用: jQuery(“#first”).keydown(function(event) { var keydown = jQuery.Event(“keydown”) keydown.keyCode = event.keyCode keydown.which = event.which jQuery(“#second”).trigger(keydown) }) 任何想法我怎么能实现这一目标?

关于调用命名函数的click事件的jquery

我有一个jQuery onClick处理程序,用这样的匿名函数写: $(“#selector”).on(“click” function(){ // do something }) 我会概括在命名函数中提取逻辑的匿名函数,它驱使我做类似的事情: $(“#selector”).on(“click” namedFunction()) function namedFunction(){ // do something } 对我来说似乎是个好解决方案。 但是由于在加载脚本后执行了namedFunction因此存在一个缺点。 在这里你可以测试不良行为。

javascript将事件处理程序绑定到水平滚动

有没有一种方法在javascript中将事件处理程序绑定到水平滚动,而不是在用户水平和垂直滚动时触发的通用滚动事件? 我想只在用户水平滚动时才触发事件。 我四处寻找这个问题的答案,但似乎找不到任何东西。 谢谢! PS如果我错误地使用某些术语,我很抱歉。 我对javascript很新。 UPDATE 非常感谢您的所有答案! 总之,看起来你们都说javascript中不支持这个,但是我可以用这样的东西来完成这个function(使用jQuery) (jsFiddle) : var oldScrollTop = $(window).scrollTop(); $(window).bind(‘scroll’, function () { if (oldScrollTop == $(window).scrollTop()) //scrolled horizontally else { //scrolled vertically oldScrollTop = $(window).scrollTop(); } });​ 这就是我需要知道的全部内容。 再次感谢!

如何创建一个检测布尔变量是否为真的事件监听器?

例如,我有var menu_ready = false; 。 我有一个ajax函数,当ajax完成时将menu_ready设置为true: //set up event listener here $(…).load(…, function() { … menu_ready = true; } 如何设置等待menu_ready为真的事件监听器?

单个JavaScript单击事件中的多个ID

在JavaScript中,我使用click事件来更改图表数据。 以下是点击事件的方法。 $(‘#pro1’).click(function () { chart.series[0].update({ data: pro1 }); }); $(‘#pro2’).click(function () { chart.series[0].update({ data: pro2 }); }); $(‘#pro3’).click(function () { chart.series[0].update({ data: pro3 }); }); 我需要在一个事件中缩小这三个单击事件,这意味着我想编写一个处理id的click事件。 有点像下面的代码。 $(‘#pro’+i).click(function () { chart.series[0].update({ data: pro+i }); }); 我不知道该怎么做。 上面的代码不正确,只是我对JavaScript缺乏了解。

触摸事件两次射击

事件发生两次,移动设备/平板电脑出现问题。 当我单击以下function时,应该下拉的菜单将下拉,然后immediataly滑回。 这只是触控设备的问题。 $(document).on(“touchend click”, “.lines-button”, function(e){ e.stopImmediatePropagation(); if($(this).hasClass(“close”)){ $(this).removeClass(“close”); $(“.widget1x1Back”).next(“.actionsHolder3”).slideUp(“fast”, function() { $(this).remove(); }); }else{ var iconsList = $(this).closest(“.top1x1”).next(“.hdnActnLst”).find(“.iconsHolder3”).html(); $(this).closest(“.widget1x1”).append(iconsList); $(this).closest(“.widget1x1”).find(“.actionsHolder3”).hide(); $(this).closest(“.widget1x1”).find(“.actionsHolder3″).slideDown(700,”easeOutBack”); $(this).addClass(“close”); } }); 任何输入都会很棒,谢谢!!