相关疑难解决方法(0)

jQuery查找使用对象注册的事件处理程序

我需要找到在对象上注册的事件处理程序.

例如:

$("#el").click(function() {...});
$("#el").mouseover(function() {...});
Run Code Online (Sandbox Code Playgroud)

$("#el")点击鼠标悬停注册.

是否有一个函数来找出它,并可能迭代事件处理程序?

如果通过适当的方法在jQuery对象上不可能,那么在纯DOM对象上是否可能?

jquery events dom

538
推荐指数
8
解决办法
40万
查看次数

检查元素上是否存在事件

有没有办法检查jQuery中是否存在事件?我正在使用一个使用自定义命名空间事件的插件,并希望能够检查事件是否绑定到元素.

javascript jquery javascript-events event-triggers

178
推荐指数
6
解决办法
24万
查看次数

jQuery事件处理程序总是按照绑定的顺序执行 - 任何方式都可以解决这个问题?

jQuery事件处理程序总是以绑定的顺序执行,这可能很烦人.例如:

$('span').click(doStuff1);
$('span').click(doStuff2);
Run Code Online (Sandbox Code Playgroud)

单击跨度将导致doStuff1()触发,然后doStuff2().

在我绑定doStuff2()时,我想 doStuff1()之前选择绑定它,但似乎没有任何简单的方法来执行此操作.

我想大多数人会说,只需编写如下代码:

$('span').click(function (){
    doStuff2();
    doStuff1();
});
Run Code Online (Sandbox Code Playgroud)

但这只是一个简单的例子 - 在实践中,这样做并不总是方便.

在某些情况下,您要绑定事件,并且您绑定的对象已经有事件.在这种情况下,您可能只希望在任何其他现有事件之前触发新事件.

那么在jQuery中实现这一目标的最佳方法是什么?

jquery

135
推荐指数
5
解决办法
10万
查看次数

在链接上模拟jQuery/JavaScript中的单击

我想使用JavaScript模拟页面上任何链接的点击.如果该链接具有与其"onclick"事件绑定的某些功能(由任何其他JS我没有任何控制),则必须调用该函数,否则链接应以正常方式运行并打开新页面.

我不确定只检查'onclick'处理程序的值就足够了.我想构建它,以便它适用于任何链接元素.

我无法使用任何JS库(不一定是jQuery)或简单地使用JavaScript来控制可能绑定到链接的onclick事件的函数.

编辑:在下面的答案的帮助下,看起来可以检查使用jQuery附加的事件处理程序或使用该onclick属性.如何检查使用addEventListener/任何其他JS库附加的事件处理程序,以便它是万无一失的?

javascript jquery onclick

53
推荐指数
5
解决办法
18万
查看次数

jQuery.data和jQuery._data(下划线数据)有什么区别?

在浏览源代码时,我注意到'toggle'应该jQuery._data用来存储元素的状态.我检查的jQuery.cache对象中铬,发现元素的数据对象有另一个目标下它由字的jQuery前面添加一个数字,我猜唯一标识.但是,我没有看到关于元素状态的数据.简单{olddisplay: 'block'}.关于jQuery._data的目的以及它本身如何工作的任何线索?

我一整天都在盯着源头......请不要告诉我查看来源.我的眼睛和大脑会感谢你.

javascript jquery

25
推荐指数
1
解决办法
1万
查看次数

如何检查元素是否有点击处理程序?

可能重复:
测试事件处理程序是否绑定到jQuery中的元素

试图做以下(链接是'a'标签的jQuery对象):

 link.data("events") //undefined even if link has event handlers
 jQuery.data(link, 'events') //undefined always also
 jQuery._data(link, 'events') //undefined always also
Run Code Online (Sandbox Code Playgroud)

使用jquery-1.8.3

那么,如何检查元素是否有点击处理程序?

javascript jquery javascript-events

20
推荐指数
1
解决办法
5万
查看次数

Opera忽略.live()事件处理程序

我有以下jQuery适用于 Opera 之外的所有主流浏览器:

jQuery(document).ready(function () {

      jQuery("#GetResults").live("click", function(e){
            e.preventDefault(); //Opera doesn't execute anything here
      });

};
Run Code Online (Sandbox Code Playgroud)

单击以下链接时应该触发:

<a id="GetResults" href="Folder/File/javascript:void(0);">Get Results</a>
Run Code Online (Sandbox Code Playgroud)

只有Opera忽略了这个.有任何想法吗?

编辑:

我刚刚发现如果我用.bind()代替.live(),一切都按预期运行.我找不到任何与Opera中的.live()错误相关的文档,它确实在jsFiddle 中工作,它指向环境的东西.可能导致这种行为的原因是什么?

javascript jquery opera

8
推荐指数
3
解决办法
831
查看次数

仅当没有其他侦听器时才添加Javascript EventListener?

我是Javascript编程领域的一个相对tyro,所以请放轻松我.:-)

我正在尝试将eventListener添加到页面上的各种DOM元素.但是,我添加我的事件的一些元素已经有了一个eventListener,我不想取代那个; 我只想将我的事件添加到一个尚未与之关联的事件的元素中.

我查看了一堆与addEventListener,event.StopPropagation,事件冒泡等相关的东西,但还没有找到任何方法来实现这一点.

有没有办法检测给定元素上的其他事件侦听器,或者某种其他方式来获取我想要的位置?

javascript events greasemonkey javascript-events

5
推荐指数
1
解决办法
2557
查看次数

使用单击事件更改所有元素的样式

我正在学习JQuery,因为我正在对网站进行重大的重新设计.我意识到这将是多么好的做一些造型中的JavaScript,而不是记住要正确的CSS类添加到每一个DIV(显然,我想忘记这样的事情).

无论如何,我想将样式添加cursor: pointer;到已注册click事件的所有元素.我认为它需要看起来像这样:

$("div").Find(/*Has Click Event*/)
  .css("cursor", "pointer");
Run Code Online (Sandbox Code Playgroud)

jquery

5
推荐指数
1
解决办法
806
查看次数

如何检查事件是否绑定到元素,以防止重复绑定?

我有一个函数,基本上创建一个覆盖整个页面的叠加div元素.它还将resize事件绑定到窗口,因此每当调整窗口大小时,叠加层也会更改其大小:

function stdOverlay() {
    var overlay = $('<div />').css({width : $(window).width(), height : $(window).height()});
    var overlayResize =
    function() {
        $(overlay).css({width : $(window).width(), height : $(window).height()});
    };
    $('body').append(overlay);
    $(window).resize(overlayResize);
    //... other codes,  like remove overlay and unbind the events
    //$('div.stdgui-overlay').unbind('resize', overlayResize);
}
Run Code Online (Sandbox Code Playgroud)

每次调用该函数时,如果没有,则添加一个叠加层,并将resize事件绑定到窗口.当它应该删除重叠事件时,它也会取消绑定事件.如果overlayResize方法绑定到window元素,如何防止重复绑定?就像是:

    if(overlyResize is not bound to window)
        $(window).resize(overlayResize);
    else
        //do something else or do nothing;
Run Code Online (Sandbox Code Playgroud)

jquery events bind

0
推荐指数
1
解决办法
2311
查看次数