2012-09-27 169 views
7

伊夫以下代码:JQuery的点击不工作

<script type="text/javascript"> 
$(document).ready(function(){ 
    shortcut.add("Ctrl+Alt+N", function() { 
     $("#btnSave").click(); 
    }); 
}); 
</script> 

其中btnSave是锚元件具有ID btnSave,快捷方式是从http://www.openjs.com/scripts/events/keyboard_shortcuts/。如果我将行$("#btnSave").click();更改为document.getElementById("btnSave").click() - 一切正常。问题是为什么jQuery实现不适用于我的情况?
PS:我的情况作出的jsfiddle:http://jsfiddle.net/0x49D1/WCmeU/
下面是类似的问题的家伙:http://forums.asp.net/t/1591818.aspx

+1

在哪里,你怎么绑定了'#btnSave' click事件? – VisioN

+0

@VisioN,我想模拟用户点击链接。其实这是asp.net代码的一部分,点击链接运行一些服务器事件。不过,请参阅我添加的JSFIDDLE示例。如果情况是用点击绑定,为什么'document.getElementById(“btnSave”)。click();'正在工作? – 0x49D1

回答

10

代替$("#btnSave").click();尝试$("#btnSave").trigger('click');

您还可以使用$("#btnSave")[0].click();这相当于jQuery来document.getElementById("btnSave").click();

更新
这不是可以模拟从JavaScript的用户链接的点击,出于安全原因,所有你能做的就是重视自己的处理程序为click事件,并基于链路的href重定向,像这样:

$("#btnSave").bind('click', function() { 
    window.location.href = $(this).attr('href'); 
}); 
+0

触发似乎执行,但链接没有点击.. – 0x49D1

+0

你想做什么是不可能的,但你可以模拟它,看看我的更新。 – Nelson

+0

然后为什么'shortcut.add(“Ctrl + Alt + N”,function(){(“#btnSave”)。click(); document.getElementById(“btnSave”)。click(); });'工作?..认为即时通讯丢失的东西:(http://jsfiddle.net/0x49D1/WCmeU/13/ – 0x49D1

1

试试这个

<script type="text/javascript"> 
     $(document).ready(function(){ 
     shortcut.add("Ctrl+Alt+N", function() { 
      $("#btnSave").live('click',function(){ 
      // do stuff here 
      }); 
     }); 
     }); </script>