标签: jquery-events

实时点击事件报告Firefox与Chrome中的不同来源

有了这个HTML

<div>
  <button>
    <img src="https://img.skitch.com/20110912-1m2qj31m7sxmh46uheef63gutu.gif">
  </button>
</div>
Run Code Online (Sandbox Code Playgroud)

和这个jQuery

$(document).ready(function() { 
  $("body").live("click", function(event) {
    $("body").append(event.target.tagName);            
  });
});
Run Code Online (Sandbox Code Playgroud)

为什么Chrome中的事件目标节点是图像,而在Firefox中它是按钮?

jsfiddle测试 - > http://jsfiddle.net/MikeGrace/YC5A7/

jquery cross-browser event-handling jquery-events

13
推荐指数
1
解决办法
1275
查看次数

绑定(keyup)到jQuery中的动态元素(Twitter Bootstrap + typehead)

我想你们中的一些人必须皱起眉头读这个标题呃?我相信人们每次都会问这个问题,但是,我还没有看到我的特殊问题,我正在努力!将事件绑定到动态创建的元素是我的kryptonite,我只是无法绕过它...

好吧,我正在使用带有typehead()插件的Twitter Boostrap.我正在使用这个技巧使其与远程数据源一起工作.此时,一切正常.我单击表单中的文本输入,为其标记,脚本将加载外部源并显示下拉列表.但我有动态元素创建,你已经想到,它只是不会对它们起作用.我正在探索live()方法,但看看脚本被解雇的"方式",我只是不确定如何实现它.

$('#anInputField').typeahead().on('keyup', function(ev){
 // stuff happens
});
Run Code Online (Sandbox Code Playgroud)

每次有密钥时,脚本都会触发一个jSON请求,检查他的东西,并将结果返回给执行作业自动完成部分的typehead().那么我怎么能说jQuery来看看初始绑定后创建的#aDropdownID呢?我继续检查我是否可以使用live(),但是因为on()替换它...我很无能为力!

任何帮助赞赏!

jquery twitter-bootstrap keyup jquery-events

13
推荐指数
2
解决办法
7万
查看次数

检测是否在jQuery中手动触发滚动事件

这个问题很久以前就已在这里提出过:

检测用户的jquery事件触发器或代码调用

但它从来没有得到最终的回答(或者我可能根本无法正确搜索).

是否可以检测scroll用户或jQuery animate函数是否触发了事件?

我正在尝试阻止scroll事件触发自己,同时做这样的事情:

$(document).scroll(function(){
    $("html").stop(true);
    var number = 400; //some other stuff is happening here
    clearTimeout(tout);
    tout = setTimeout(function(){
        if(top == $(document).scrollTop()){
            $("html").animate({
                scrollTop: (number),
                easing: "easeInQuad",
                duration: 110
            });
        }
    },120);
});
Run Code Online (Sandbox Code Playgroud)

这段代码似乎很合适:

$('#scroller').scroll(function(e) {
    if (e.originalEvent) {
        console.log('scroll happen manual scroll');
    } else {
        console.log('scroll happen by call');
    }
});
Run Code Online (Sandbox Code Playgroud)

但是该originalEvent对象无法正确检测动画触发器.

有没有其他方法可以做到这一点?

javascript jquery events scroll jquery-events

12
推荐指数
2
解决办法
3万
查看次数

如何将jQuery用于预定义事件?

是否有任何标准规则在jQuery插件中实现预定义事件?

例如,Zebra Accordion插件(jQuery的一个小型手风琴插件)或任何其他插件的特殊情况定义了一些事件,如下所示:

Zebra手风琴活动:

onClose:折叠选项卡后触发的事件.

onOpen:折叠选项卡后触发的事件.

在这种情况下,如果我想在框标题之后添加一个具有特殊Font Awesome字符的div (例如fa-chevron-down)collapsed(Closed,折叠状态)并删除该字符并将其替换为新字符(如fa- (chevron-up)靠近方框标题时expended(打开状态).我想最后添加一些像jQuery Accordion这样的功能.我尝试使用下面的代码,但似乎出现了问题:

$('.Zebra_Accordion').on('onOpen', function(e) {
      $(this).append( "<span class='fa fa-chevron-down'></span>" );
  });

$('.Zebra_Accordion').off('onClose', function(e) {
      $(this).append( "<span class='fa fa-chevron-up'></span>" );
  });
Run Code Online (Sandbox Code Playgroud)

javascript jquery dom jquery-plugins jquery-events

12
推荐指数
1
解决办法
341
查看次数

如何选择jQuery下拉val()并触发事件?

我在下拉列表中注册了一个jQuery插件,如下所示:

$('#country').linkToStates('#province');
Run Code Online (Sandbox Code Playgroud)

我手动选择下拉这样的:

$('#country').val('United States');
Run Code Online (Sandbox Code Playgroud)

但是onchange事件并没有触发在它之前注册的.linkToStates().所以看起来val()只改变了下拉位置,但实际上并没有改变onchange事件.有人可以帮忙吗?

顺便说一下,这是注册的代码,如果它有帮助:

  $.fn.extend({
        linkToStates: function(state_select_id) {
      $(this).change(function() {
        var country = $(this).attr('value');
        $(state_select_id).removeOption(/.*/);
        switch (country) {
          case 'Canada':
            $(state_select_id).addOption(canadian_provinces, false);
            break;
          case 'United States':
            $(state_select_id).addOption(us_states, false);
            break;
          default:
            $(state_select_id).addOption({ '' : 'Please select a Country'}, false);
            break;
        }
      });
    }
  });
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-plugins jquery-events

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

对于自定义事件,jQuery触发器不会使用bind()或on()触发

任何人都可以告诉我为什么这段代码不起作用?

$('body').on('test', function() {
  alert('test');
});

$('body').trigger('test');
Run Code Online (Sandbox Code Playgroud)

我正在使用jquery-1.7.2.min.我没有得到任何错误,只是没有任何反应.

我已经尝试将代码放在内联脚本中,$(document).ready()但仍然没有.我也试过都on()bind()和没有结果.我看到所有示例都显示相同的语法,所以有什么不同呢?

jquery triggers bind custom-events jquery-events

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

事件授权变得有价值需要多少元素?

阅读关于jQuery性能的另一个SO问题,我开始考虑使用事件委托而不是单独绑定元素的重要性.我主要考虑的是jQuery,但我认为它可能适用于Javascript.

事件授权有两个主要目的:

  1. 允许处理程序处理尚未创建/插入DOM的元素.
  2. 将一个函数绑定到一个共同的祖先元素而不是多个兄弟元素

我的问题是关于其中的第二个问题.一般的答案可能是"它取决于确切的情况",但我想知道是否有经验法则或基准测试方法来测试这一点.

所以,问题是:在事件委托的性能优势超过性能成本之前,您需要多少元素?

javascript performance jquery event-delegation jquery-events

10
推荐指数
1
解决办法
413
查看次数

在jQuery Datatables中初始化搜索输入

我正在尝试使用用户可以替换或优化的默认搜索值初始化数据表.这是服务器端数据.我没有在Datatables文档中阅读过您可以执行此操作的任何内容.

$('#example_filter label input[type=text]').val('Default Product')
Run Code Online (Sandbox Code Playgroud)

上面设置了值,但因为没有涉及按键,事件处理程序不会提取它.有没有一种方法可以链接到上面,就像输入键一样,或者我应该编写一个事件处理程序来查找字段中的更改.我是数据表和jquery新手的新手.谢谢.

javascript jquery datatables jquery-events

10
推荐指数
4
解决办法
2万
查看次数

使用带有on('input')的event.preventDefault()的jQuery

我正在捕捉粘贴事件 $('selector').on('input', function(event) { ... });

然后我试图测试粘贴的内容,如果没有通过验证,请取消粘贴event.preventDefault().不幸的是,到执行监听器功能时,文本已被粘贴并且event.preventDefault()什么都不做.

那么什么是捕获粘贴事件的好方法,如果粘贴的内容未验证,请撤消/阻止粘贴?

我知道我可以使用.on('paste', function(event) { ... }),但这不会给我粘贴的文本或粘贴后的输入元素的内容,除非我使用setTimeout()一些分钟的等待时间,我想避免使用setTimeout().

html javascript jquery paste jquery-events

10
推荐指数
1
解决办法
1852
查看次数

jquery - 触发自定义事件

我在jquery的ready函数中将一个自定义事件处理程序附加到body.紧接着,我成功触发了自定义事件.

$(function(){
    $("body").on("test", function(){ alert("test triggered"); }
    $("body").trigger("test");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在控制台中触发它时没有任何反应.为什么?

jquery event-handling custom-events jquery-events

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