将局部变量传递给点击函数

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:如果我有任何错误,请告诉我:)