jquery - 与 jQuery 的简单绑定(bind)

标签 jquery

我正在尝试重新熟悉 jQuery,但入门时遇到困难。

在下面的代码中,我想说“当 DOM 准备就绪时,将警报绑定(bind)到“choice”div 的更改事件,该 div 实际上是表单上的一个选择元素。当我通过警报立即显示,并且当我做出新选择时不显示。

代码如下:

$(document).ready(doBind());

function doBind() {
    $('#choice').change(myAlert('Choice has been changed!'));    
}

function myAlert($msg) {
    alert($msg);
}

最佳答案

您需要区分函数引用和调用(调用)。当您关联事件处理程序或回调时,您需要一个函数引用,然后在适当的时间调用该函数。一旦传递参数并将 (..) (或空 ())添加到函数引用中,就会调用。如果您在绑定(bind)期间执行此操作,则该函数将在绑定(bind)时被调用,并且该函数的输出将被绑定(bind),而不是绑定(bind)引用(这将允许通常预期的稍后调用)。

您应该按如下方式更改两个绑定(bind):

   $(document).ready(doBind); //Now a reference to that function

    function doBind() {
        $('#choice').change(function() { myAlert('Choice has been changed!');});    
       //New anonymous function reference which allows for arguments and is conventionally used
    }

    function myAlert($msg) {
        alert($msg);
    }

几个简单的示例来突出语法差异和 () 的使用。

下面的函数将采用函数引用。作为参数,然后在内部执行它(处理程序和回调的基本工作方式)。

functionWrapper = function(funk) {
  //Do something else
  funk()
}

现在流行的匿名函数声明后立即调用:函数通常会被写成function() {...}(),这会导致对新创建的函数的引用立即被调用提供的任何参数(在 JavaScript 中用于强制作用域)。任何一种情况下的参数都可以用作函数中的参数,因此调用 (..) 中的任何内容都会映射到 function(..) 中声明的内容但关注引用与调用是您问题的主要问题。

关于jquery - 与 jQuery 的简单绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657836/

相关文章:

javascript - 切换多行内容

Jquery Mobile 面板样式问题

javascript - 为什么 jquery .load() 不从外部网站加载文本文件?

jquery - 具有动态间隔文本的菜单以覆盖整个宽度

javascript - 在 Django 中将 JSONified 对象传递到后端?

javascript - 如何通过javascript设置背景渐变css

jquery - 如何在使用 jQuery 加载页面之前隐藏 HTML 元素

jquery - 每个 h2 之后用 div 包裹内容

javascript - jQuery Form - 序列化为多维数组?

JQuery - 尝试更改/更新点击值并传递完整值文本,但仅添加数字