Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery on click事件函数也可以用作普通函数_Javascript_Jquery - Fatal编程技术网

Javascript jQuery on click事件函数也可以用作普通函数

Javascript jQuery on click事件函数也可以用作普通函数,javascript,jquery,Javascript,Jquery,我有一个事件处理程序方法,它在单击按钮时执行。我还传递了一些数据,如下所示 $( "button" ).on( "click", {name: "Hello"}, greet ); 该方法定义为: function greet(event) { // Use the data as event.data.name // Access the DOM element on whose click this method was invoked as $(this) } 但我也希

我有一个事件处理程序方法,它在单击按钮时执行。我还传递了一些数据,如下所示

$( "button" ).on( "click", {name: "Hello"}, greet );
该方法定义为:

function greet(event) {
    // Use the data as event.data.name
    // Access the DOM element on whose click this method was invoked as $(this)
}
但我也希望将此函数用作普通的js函数

  • 如何传递数据
    ({name:“Namaskara”})
  • 如何设置上下文-例如,假设我有另一个按钮作为
    ,我想使用此按钮作为上下文,并发送到
    greet()
    函数,以便函数中使用的
    $(this)
    实际上是按按钮
  • 更新了您的ID内容:


    不需要第二个函数映射,而是使用代理:

    function greet(name){
       console.log(name);
    }
    var proxy = $.proxy(greet, this, "hello"); 
    
    $("#test").on("click", proxy);
    
    1)。回答您的第一个问题

    但我也希望将此函数用作普通的js函数。如何传递数据
    {name:“Namaskara”}:

    您需要传入一个具有
    数据
    属性的对象:

    greet({data: {name: "Namaskara"}});
    
    2.关于上下文的第二个问题:

    var $kannada = $('#kannada'); // another button
    greet.call($kannada[0], {data: {name: "Namaskara"}});
    
    在这种情况下,
    greet
    将被调用,就像您手动单击
    #kannada
    按钮一样,这意味着上下文
    将指向
    按钮#kannada
    。当然,在这种情况下,
    greet
    中的事件对象将不是真正的鼠标事件,但它将正确设置
    数据
    属性


    演示:另一种方法是使用
    data-*
    html5属性来保存要使用的特定数据

    HTML:
    “正常js功能”是什么意思?是什么导致当前的
    问候
    功能异常?同意Vohuman的意见这有什么问题?您是否将
    单击
    事件放入
    .ready()中
    block?我得到了这个答案,作为解决方案的基础,它起了作用。我喜欢这里使用的greet.call的想法,它可以更改上下文,也可以使用event.data来传递数据
    greet({data: {name: "Namaskara"}});
    
    var $kannada = $('#kannada'); // another button
    greet.call($kannada[0], {data: {name: "Namaskara"}});
    
    <button data-name="Hello">click</button>
    <button id="kannada" data-name="Namaskara">kannada</button>
    
    function greet() {
        alert($(this).data('name')); // alerts - Hello for button 1
    }                                // alerts - kannada for button 2
    $(function () {
        $("button").on("click", greet);
    });