Tag: 事件处理

jQuery preventDefault()不起作用

我有以下代码: $(document).ready(function(){ $(“div.subtab_left li.notebook a”).click(function(event) { event.preventDefault(); return false; }); }); 但是当我点击元素时……它不会阻止默认操作..为什么? 并在将代码修改为: $(document).ready(function(){ $(“div.subtab_left li.notebook a”).click(function() { e.preventDefault(); alert(“asdasdad”); return false; }); }); 它会停止默认操作,但不会发出警报..我在jQuery文档上找不到任何答案。 完整代码如下: $(document).ready(function(){ $(‘#tabs div.tab’).hide(); $(‘#tabs div.tab:first’).show(); $(‘#tabs ul li:first’).addClass(‘active’); $(‘#tabs ul li a’).click(function(){ $(‘#tabs ul li’).removeClass(‘active’); $(this).parent().addClass(‘active’); var currentTab = $(this).attr(‘href’); $(‘#tabs div.tab’).hide(); $(currentTab).show(); return false; }); $(“div.subtab_left li.notebook a”).click(function(e) […]

数字输入滚动的HTML5事件监听器 – 仅限Chrome

我正在玩一些HTML5元素,并遇到了一个有趣的行为。 这仅适用于Chrome。 使用输入类型的数字,您可以设置最小值,最大值和步长,并使用向上和向下箭头来控制输入。 我发现绑定一个click事件监听器会捕获箭头上的按下,因为在字段模糊之前实际上不会发生更改。 您还可以使用键盘上的向上和向下箭头键来更改限制范围内的值,按键绑定可以选择这些键。 但是,在Chrome中,您还可以通过将鼠标hover在输入和滚动上来使用鼠标滚轮来更改输入。 但是,我无法找到听取此事件的方法。 关于jsfiddle的例子 HTML: JavaScript(使用jQuery): $( ‘#test’ ).click(function(){ $( this ).after( ‘click’ ); }); $( ‘#test’ ).change(function(){ $( this ).after( ‘change’ ); }); $( ‘#test’ ).keypress(function(){ $( this ).after( ‘keypress’ ); }); 关于如何听取滚动更改的任何想法? 同样,这只适用于撰写本文时的Chrome。

将事件处理程序附加到twitter bootstrap popover中的按钮

我正在使用twitter bootstrap popovers, 在popover我添加一个按钮, 我需要在按钮上附加一个click处理程序,但popover的工作方式是每次显示它删除并重新创建元素,而不是仅显示/隐藏它,因此删除我与所述按钮关联的任何事件处理程序。 我正在使用他们自己的按钮版本创建几个弹出窗口,所以只是将一个类应用于弹出窗口将不起作用(除非我为每个生成一个不同的类:/),该按钮可能有也可能没有它自己的ID ,所以不能申请身份证。 如何将事件处理程序应用于twitter bootstrap popover内容中的某些内容?

只需在JQUERY类中单击一下即可

我有一个链接,将通过ajax加载一些内容。 我的问题是,我不想删除文本“加载评论”,我只是想在这个类中不允许更多点击。 Load comments jQuery的 var Progressajax = false; $(function() { $(“.showcomments”).click(function(){ if(Progressajax) return; Progressajax = true; var element = $(this); var id = element.attr(“id”); Progressajax = false; alert(“ok”); $(data).hide().prependTo(‘.varload’+id).fadeIn(1000); //$(element).remove(); $(element).removeAttr(“href”); $(element).removeClass(‘showcomments’); }); }); 我只想第一次看到OK。 我怎样才能删除这个课程? $(element).removeClass(‘showcomments’); 这不行…… http://jsfiddle.net/qsn1tuk1/

jQuery的新on()方法如何与性能中的live()方法进行比较?

jQuery有一个名为on()的新方法,建议用它替换delegate() , live()和.bind() 。 例如,使用两种方法: $(‘#some-button’).on(‘click’, function() { //do something when #some-button is clicked }); $(‘#some-button’).live(‘click’, function() { //do something when #some-button is clicked }); 哪一个表现更好? (我知道这两个事件上下文都在文档级别。)

在Jquery中正确使用.on方法

我真的很喜欢.live方法,因为它很简单,基本上与标准事件处理程序没什么不同。 唉,它被弃用了,我留下了.on方法。 基本上,我正在加载并动态加载内容,我需要触发相同的事件处理程序。 而不是两次或多次添加事件处理程序。 .live对此很好,但是.on已经取代了它,我似乎无法让它工作。 检查此代码: jQuery(‘#who_me’).live(‘click’, function(){ alert(‘test123’); return false; }); 应该是这样的: jQuery(‘#who_me’).on(‘click’, function(){ alert(‘test123’); return false; }); 但是当我在ajax调用之后用.html方法替换内容时,只有live方法有效。 任何人都可以为我清除这个吗?

由于虚拟键盘导致的window.resize会导致jquery mobile出现问题

我遇到了一个不寻常的问题,我正在寻找建议。 基本上,我正在使用: JQuery Mobile 1.1 JQuery 8.2 PhoneGap(cordova)2.1 在iPhone上我的应用程序的许多页面上,如果我将光标放入输入框,则会打开虚拟键盘。 这很好,也很期待。 问题出在这里:在某些情况下(但不是全部),将光标放入输入框会触发window.resize事件。 我通过以下代码validation了这一点: $(window).resize(function(e) { alert(‘The window resize occurred! Width: ‘ + $(window).width() + ” Height: ” + $(window).height()); debugger; return false; }); 在解析window.resize事件后,JQueryMobile立即决定将页面调整为不正确的高度。 我可以告诉它是页面,因为我为每个元素添加了不同的颜色边框以查看它是什么。 在许多情况下,这个resize的动作导致我的一半GUI在div的底部溢出,有时甚至使我的光标隐藏在div下面。 了解它的最佳方法是使用屏幕截图: 现在,我真的不希望任何人对此有一个确切的答案。 我只是在寻找调试技巧。 我在window.resize()事件中添加了一个“调试器”语句,并尝试逐步执行代码。 我希望能够引导一些旨在调整页面大小的其他resize的侦听器。 如果我能找到它,那么当有人选择表单元素时,我可以暂时削弱它,然后重新启用调整模糊或方向更改的大小。 问题是,我逐步完成了每行代码,调试过程在resize之前就停止了。 这让我想知道是否还有一些其他事件被从window.resize中解雇。 所以我在下面添加了两行: document.addEventListener(“throttledresize”, function() { alert(“throttledresize fired.”) }, false); document.addEventListener(“orientationchange”, function() { alert(“orientationchange […]

聚焦和模糊jQuery事件而不是冒泡

使用以下html结构: 和以下jquery代码: $(‘form’).on(“focus”, function(event) { $(“p”).append(“focus no delegation”); }) 为什么焦点事件没有到达我的事件处理程序? 使用选择器参数绑定事件可以正常工作: $(‘form’).on(“focus”, “input”, function(event) { $(“p”).append(“focus delegation”); }) 事件下一个片段的工作原理所以焦点事件实际上是泡沫…… $(‘form’).on(“focus”, “span”, function(event) { $(“p”).append(“focus delegation”); }) 这两种forms都适用于点击和更改事件: $(‘form’).on(“click”, function(event) { $(“p”).append(“click no delegation”); }) $(‘form’).on(“click”, “input”, function(event) { $(“p”).append(“click delegation”); }) 我发现关于焦点事件冒泡的唯一注意事项是相对于我不使用的旧jQuery版本。 在这里看到它 编辑1 好吧这令人困惑……根据jQuery的焦点文档: 焦点事件不会在Internet Explorer中冒泡。 因此,依赖于焦点事件的事件委派的脚本将无法跨浏览器一致地工作。 但是,从版本1.4.2开始,jQuery通过在其事件委托方法.live()和.delegate()中将焦点映射到focusin事件来解决此限制。 根据jQuery的焦点文档: 当focusin或其中的任何元素获得焦点时,focusin事件将被发送到元素。 这与焦点事件的不同之处在于它支持在父元素上检测焦点事件(换句话说,它支持事件冒泡)。 对我来说为时已晚还是与另一方相矛盾?

有没有办法检测用户是否在beforeunload事件中按下“Stay on page”或“Leave page”?

有没有办法在下面的代码中检测到用户点击了“离开页面”或“留在页面上”按钮? $(window).on(‘beforeunload’, function (){ return “You save some unsaved data, Do you want to leave?”; });

Jquery删除元素内的所有事件处理程序

我有一个div元素,里面有几个元素,比如按钮等,它们都附有事件处理程序。 我知道有可能去: $(“#button1”).off() 要删除按钮的处理程序,但如果可能的话我想做这样的事情: $(“#div1”).removeChildHandlers(); 在JQuery中有一个本机函数来执行此操作,还是我必须将它们循环所有元素并逐个删除?