【问题标题】:pass a local variable to an click function将局部变量传递给 click 函数
【发布时间】:2020-09-26 23:41:01
【问题描述】:

我想将一个局部变量从一个函数传递到另一个函数,我尝试了一些解决方案,但它们没有奏效,因为我有一个 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/

【问题讨论】:

  • 您可能想查看给定代码的间距。因为它坐在那里你有括号/函数调用的一些问题。最简单的方法是复制/粘贴代码,然后点击使用编辑器中的代码按钮以正确缩进以进行格式化。
  • 我编辑了代码
  • TY 用于编辑代码。代码试图完成的究竟是什么?你想让每个孩子……做点什么,但我不知道具体是什么。
  • 在'fila'里面我有多个p标签,在pieceRow里面我有多个img,在这段代码中我想得到所有的类,p和img都按类名配对,当我得到我必须单击任何 p 或 img 的类,它及其对必须突出显示。如果您有任何疑问,请询问
  • 你能分享一些示例 HTML 吗?

标签: html jquery css function var


【解决方案1】:

请试试这个代码:

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 : 如果我弄错了,请告诉我 :)

【讨论】:

  • 非常感谢我实现了我想要的,我只需要在添加/删除类中添加一个 if (clase == clase) :)
【解决方案2】:

假设您将把它传递给一个纯 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”作为整数类型的变量传递。使用此代码作为尝试实现目标的灵感。给出一个更准确的答案有点困难,因为我们不知道必须将哪些变量传递给什么函数以及目的是什么。

祝你好运!

【讨论】:

  • 这不会在点击时触发,因为myFunc 会立即被调用。你的第二个值需要使用.bindmyFunc 来返回一个函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
相关资源
最近更新 更多