微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将局部变量传递给点击函数

我想将一个局部变量从一个函数传递给另一个函数,我尝试了一些解决方案,但是它们没有用,因为我有一个click函数,我需要首先将变量放入,而我不怎么做做到这一点,我也在函数外部声明了变量,但是如果我在所有函数外部都没有使用它的所有值,或者在函数 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/

解决方法

请尝试以下代码:

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:让我知道我是否以任何方式弄错了:)

,

让我们假设您将其传递给纯JS函数。

function myFunc() {
   console.log("My function!");
}

在您的“点击”中,您将调用“ resalter”功能,该功能也在现场定义。

您想调用myFunc,所以:

$(clase).on('click',myFunc())

现在,myFunc不需要变量。我们只传递一个变量:

function myFunc(myVar) {
   console.log("Passing a variable of type: " + typeof myVar);
}

现在,只需要在要调用的函数中传递此var。鉴于我之前给出的示例,我们有:

let x = 1; // our variable

$(clase).on('click',myFunc(x))

通过这种方式,您将“ x”作为整数类型的变量传递。以此代码为灵感,尝试实现自己的目标。鉴于我们不知道必须将哪些变量传递给什么函数以及目的是什么,所以给出一个更准确的答案有点困难。

祝你好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。