为什么这些Javascripts不一样?

时间:2017-05-10 04:13:28

标签: javascript jquery

$(document).ready(function() {
    $("button").on("click", TestFunction());
});

function TestFunction() {
    console.log("Function called");
    $b = $("#test");
    $b.remove();
}

VS

$(document).ready(function() {
    $("button").on("click", function() {
        $b = $("#test");
        $b.remove();          
    });
  });

第一个在页面加载后删除按钮#test。无需单击按钮,只需将其删除即可。第二个按预期工作。显示该按钮,在调用该按钮之前不会将其删除。

我没有进行Javascript语法/ jQuery API的哪些部分?我认为传递给.on()的handler参数是一个函数。我在第一个例子中传递了一个函数,似乎已经调用了它,但它忽略了“点击”。

在调用函数之前,函数内部是否应该被忽略?

3 个答案:

答案 0 :(得分:5)

$("button").on的第二个参数接受函数的函数 NOT 返回值(除非返回值属于function)类型。你为第二个版本而不是第一个版本做得对。因此,要在第一个版本中修复您的问题,您必须传递一个函数,如下所示:



$(document).ready(function() {
    $("button").on("click", TestFunction);
});




答案 1 :(得分:0)

package com.sparkarma.spark
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object WordCount{

 def main(args:Array[String])  {
val conf = new SparkConf().setAppName("Word Count").setMaster("local[2]")
val sc = new SparkContext(conf)



 val bigFile = sc.textFile("hdfs://localhost:9000/home/chaitanya/files/bigText")

 val words = bigFile.flatMap(line => line.split(" ")).count()

println(words)
}
}

现在应该可以了, ()在没有它们的情况下立即调用函数,您传递函数值

答案 2 :(得分:0)

在第一种绑定事件方式中,您实际上正在调用一个函数,该函数返回的内容将与click事件上的按钮绑定。

因此,不应该调用函数,而应该只传递应该与元素绑定的函数名。

$(document).ready(function() {
    $("button").on("click", TestFunction);
});