将局部变量传递给点击函数
pass a local variable to an click function
我想将一个局部变量从一个函数传递到另一个函数,我已经尝试了一些解决方案,但它们没有用,因为我有一个点击功能,我需要首先放置变量,但我没有怎么做,我也在函数外部声明了变量,但是如果我在所有函数之外使用它,它没有所有值,或者在函数内部 resaltar 什么也没有出现,任何欢迎帮助
let children=$('div[class^="fila"], div[class^="pieceRow"]' ).children()
var clase
$(children).each(function getClass(){
clase=$(this).attr('class')
$(clase).on('click', function resaltar(){
if (clase==clase) {
$(this).addClass('shadow')
}
})
})
这是 html 代码 https://jsfiddle.net/qb5fwcus/
假设您将把它传递给纯 JS 函数。
function myFunc() {
console.log("My function!");
}
在您的 'click' 中,您正在调用函数“'resalter'”,您也在当场定义该函数。
您想调用 myFunc,所以:
$(clase).on('click', myFunc())
现在,myFunc 不需要变量。让我们传递一个变量:
function myFunc(myVar) {
console.log("Passing a variable of type: " + typeof myVar);
}
现在,您只需在调用的函数中传递此变量。鉴于我之前给出的例子,我们有:
let x = 1; // our variable
$(clase).on('click', myFunc(x))
这样,您将 'x' 作为整数类型的变量传递。使用此代码作为灵感来尝试实现您的目标。鉴于我们不知道必须将哪些变量传递给哪个函数以及目的是什么,因此很难给出更准确的答案。
祝你好运!
请试试这个代码:
let children = $('div[class^="fila"], div[class^="pieceRow"]' ).children();
$(children).on('click', function(){
var clase = $(this).attr('class');
resaltar(clase);
})
function resaltar(clase){
$('.shadow').removeClass('shadow');
$('.' + clase).addClass('shadow');
}
解释:您不能为任何事件处理程序的回调函数传递任何值。它可以是匿名函数,也可以是不需要任何参数的函数。但是,您可以通过使回调函数匿名并从中调用任何函数来实现这一点。这样就可以传递变量了。
PS:如果我有任何错误,请告诉我:)
我想将一个局部变量从一个函数传递到另一个函数,我已经尝试了一些解决方案,但它们没有用,因为我有一个点击功能,我需要首先放置变量,但我没有怎么做,我也在函数外部声明了变量,但是如果我在所有函数之外使用它,它没有所有值,或者在函数内部 resaltar 什么也没有出现,任何欢迎帮助
let children=$('div[class^="fila"], div[class^="pieceRow"]' ).children()
var clase
$(children).each(function getClass(){
clase=$(this).attr('class')
$(clase).on('click', function resaltar(){
if (clase==clase) {
$(this).addClass('shadow')
}
})
})
这是 html 代码 https://jsfiddle.net/qb5fwcus/
假设您将把它传递给纯 JS 函数。
function myFunc() {
console.log("My function!");
}
在您的 'click' 中,您正在调用函数“'resalter'”,您也在当场定义该函数。
您想调用 myFunc,所以:
$(clase).on('click', myFunc())
现在,myFunc 不需要变量。让我们传递一个变量:
function myFunc(myVar) {
console.log("Passing a variable of type: " + typeof myVar);
}
现在,您只需在调用的函数中传递此变量。鉴于我之前给出的例子,我们有:
let x = 1; // our variable
$(clase).on('click', myFunc(x))
这样,您将 'x' 作为整数类型的变量传递。使用此代码作为灵感来尝试实现您的目标。鉴于我们不知道必须将哪些变量传递给哪个函数以及目的是什么,因此很难给出更准确的答案。
祝你好运!
请试试这个代码:
let children = $('div[class^="fila"], div[class^="pieceRow"]' ).children();
$(children).on('click', function(){
var clase = $(this).attr('class');
resaltar(clase);
})
function resaltar(clase){
$('.shadow').removeClass('shadow');
$('.' + clase).addClass('shadow');
}
解释:您不能为任何事件处理程序的回调函数传递任何值。它可以是匿名函数,也可以是不需要任何参数的函数。但是,您可以通过使回调函数匿名并从中调用任何函数来实现这一点。这样就可以传递变量了。
PS:如果我有任何错误,请告诉我:)