我有一个事件处理程序方法,只需单击一个按钮即可执行。我还传递了一些数据,如下所示
$( "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"})
?<button id="kannada" />
,我想使用此按钮作为上下文并发送到greet()
函数,以便{{1}函数中使用的实际上是按钮答案 0 :(得分:1)
1)。回答您的第一个问题。
但我也希望将此功能用作普通的js功能。如何传递数据
{name:“Namaskara”}?“:
您需要使用data
属性传递一个对象:
greet({data: {name: "Namaskara"}});
2)。关于背景的第二个问题:
var $kannada = $('#kannada'); // another button
greet.call($kannada[0], {data: {name: "Namaskara"}});
在这种情况下,greet
将被调用,就像您手动点击#kannada
按钮一样,这意味着上下文this
将指向button#kannada
。当然,在这种情况下,greet
中的事件对象将不是真正的鼠标事件,但它将正确设置data
属性。
答案 1 :(得分:0)
$('button').click(function(){
otherfunction('Namaskara');
});
function otherfunction(name){
//do something here with the name :)
alert(name);
}
更新了您的ID内容:
答案 2 :(得分:0)
$('button').click(function(){
second_function('param_data1', 'param_data2');
});
function second_function(getParam1, getParam2){
alert(getParam1 + getParam2);
}
答案 3 :(得分:0)
不需要第二个函数映射代替使用代理:
function greet(name){
console.log(name);
}
var proxy = $.proxy(greet, this, "hello");
$("#test").on("click", proxy);
答案 4 :(得分:0)
另一种方法是使用data-*
html5属性来保存要使用的特定数据。你可以这样做:
<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);
});