Tag: 事件处理

jQuery(event):监视元素样式

让我们说有这样的元素 Watch Me Please 我们可以看到上面的元素是display: none ,我怎样才能让脚本看到这个元素。 当该元素样式更改为display: block然后会有一些代码将被触发。 非常感谢…

event.keycode vs event.which

我忽略了Firefox的keydown行为,因为按下回车键(实际上是任何键)而不关注特定字段将不会触发keydown事件,它只会触发按键事件。 这可能非常令人困惑,因为keydown和keyup事件使用JavaScript密钥代码,而keypress使用ASCII代码。 幸运的是,13(输入/返回)对两者都很常见。 在这种情况下,使用按键的 FF有什么原因吗? 有什么好处? 一旦建立IE8就会愚蠢,因为它不允许preventDefault要求而不是returnValue = false ,来自另一个SOpost的以下片段certificate非常有用: event.preventDefault ? event.preventDefault() : event.returnValue = false; 在搜索解决这些问题的过程中,我一直对event.keycode和event.which感到困惑。 即我使用类似于以下的switch语句做错了: $(“#class_Name”).bind(“keydown”, function(event){ // do not test input if field controls used switch(event.which){ case 13: //enter key event.preventDefault ? event.preventDefault() : event.returnValue = false; break; } 以下是否更好,如果是这样,为什么? $(“body”).keypress(function(event){ // stop inadvertant form submission if (event.keycode == “13”){ […]

jQuery在元素内部检测mousedown,然后在元素外部进行mouseup

我有类似于绘图canvas的东西,我在mouseup上捕获它的状态以进行撤消。 canvas不是全屏,因此您可以使用画笔绘制并在canvas外部释放。 像这样的东西: $(“#element”).mousedown(function(){ $(document).mouseup(function(){ //do something }); }); 但这当然不起作用。 普通的$(document).mouseup也不起作用,因为我有许多其他UI元素,并且每次单击UI元素时它都会保存状态。 有任何想法吗?

即使未引发事件,也始终调用Javascript,事件处理程序

我有以下代码扩展了JQuery并为JQuery添加了一个方法: $.fn.attachWithMessage = function () { $(this).focusin(showMessage()); } function showMessage() { alert(‘hi’); } 所以我可以使用以下代码: $(document).ready(function () { $(“#textbox”).attachWithMessage (); }); 当我第一次加载页面时,会出现一个消息框,显示(’hi’)消息。 即使我没有在文本框中单击。 我也尝试了点击事件,消息仍然自动显示。 有任何想法吗 ??

在Javascript中访问事件处理程序中的类成员变量

我有一个关于从类使用的事件处理程序内部访问Javascript类成员变量的正确方法的快速问题。 例如: function Map() { this.x = 0; this.y = 0; $(“body”).mousemove( function(event) { this.x = event.pageX; // Is not able to access Map’s member variable “x” this.y = event.pageY; // Is not able to access Map’s member variable “y” }); } 事件处理程序中的“this.x”尝试影响触发事件的元素的“x”成员变量,而不是更改“Map”类的成员变量。 从事件处理程序中访问“Map”类的成员变量的正确方法是什么? 任何帮助将不胜感激 – 我一直在这个问题上摸不着头脑。 干杯,查理

在jQuery中绑定现有的JavaScript函数

使用jQuery我想将现有函数绑定到按钮。 我已经浏览了文档并找到了bind方法,但是jQuery上的示例绑定了新创建的函数,因为我想绑定一个已经硬编码的函数,例如: function fHardCodedFunction(){ //Do stuff } function fBindFunctionToElement(){ $(“#MyButton”).bind(“click”, fHardCodedFunction()); } 这可能吗? 或者我是以错误的方式来做这件事的?

JQuery自动完成validation选定的值

我们正在使用JörnZaefferer编写的autocomplete jquery插件,并且正在尝试validation是否输入了有效选项。 该插件具有result()事件,该事件在进行选择时触发。 这没关系,但是当用户点击时我需要检查文本框中的值。 所以我们尝试了.change()和.blur()事件,但它们都会产生一个问题:当你点击结果div中的一个条目(’suggest’列表)时,.change()和.blur()事件触发,这是在插件向文本框写入值之前,因此此时无需validation。 有人可以帮我配置事件,所以每当有人点击,但不在结果框中我可以检查框中的有效值。 如果这是错误的方法,请通知我正确的方法。 我们最初使用此插件是因为它的’mustMatch’选项。 此选项似乎并不适用于所有情况。 很多时候,一个有效的条目将写入文本框,而不是被插件清除为无效,我无法确定原因。 基本代码示例: Choose Favorite $(“.suggest”).autocomplete(“fetchNames.asp”, { matchContains:false, minChars:1, autoFill:false, mustMatch:false, cacheLength:20, max:20 }); $(“.suggest”).result(function(event, data, formatted) { var u = this; // Check value here }); /* OR */ $(“.suggest”).change(function(me) { //check value here }); Select name (I show 10):

覆盖“this”变量问题或如何调用成员函数?

我有这个类,我使用jQuery和Prototype的组合: var MyClass = Class.create({ initElements: function(sumEl) { this.sumEl = sumEl; sumEl.keyup(this.updateSumHandler); }, updateSumHandler: function(event) { // Throws error here: “this.updateSum is not a function” this.updateSum(); }, updateSum: function() { // does something here } }); 我怎么能调用this.updateSum()呢?

jQuery live(’click’)触发右键单击

我注意到jQuery中live()函数的一个奇怪的行为: normal live $(‘#normal’).click(clickHandler); $(‘#live’).live(‘click’, clickHandler); function clickHandler() { alert(“Clicked”); return false; } 在您右键单击“实时”链接并触发处理程序,然后不显示上下文菜单之前,这很好,很花哨。 事件处理程序根本不会在“普通”链接上触发(如预期的那样)。 我已经能够通过将处理程序更改为: function clickHandler(e) { if (e.button != 0) return true; // normal handler code here return false; } 但是,必须将其添加到所有事件处理程序中真的很烦人。 有没有更好的方法让事件处理程序像普通的点击处理程序一样点火?

在javascript中异步或同步调用事件处理程序

事件处理程序是在JavaScript中同步还是异步执行的? 这是JS bin ,它显示了事件处理程序是同步执行的。 码: $(‘#toclick’).bind(‘custom’, function() { for (var i=0; i<100000; i++) {} console.log('Inside click handler'); }); $('#toclick').trigger('custom'); console.log('Outside click handler'); Output: Inside click handler Outside click handler 这意味着如果我们触发事件,除非执行所有事件处理程序,否则不会执行它下面的代码。 我对吗 ? Bin有多个事件处理程序