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)
实际上是按按钮不需要第二个函数映射,而是使用代理:
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);
});