如何将点击处理程序添加到类中并找出点击了哪个元素?

新手上路,请多包涵

我一直在使用以下方法将点击事件添加到一个 id,我想知道我是否可以对一个类做同样的事情……我有很多项目(在 for each 循环中创建)并且我需要能够点击它们然后拾取被点击的……这是我现有的代码

$('submit-button').bind('click', submit_click);

function submit_click() {
    alert('I am clicked');
}

我想知道是否有某种方法可以将变量传递到我的点击函数中,以便我可以检查 ID?或类似的

因此这个

function submit_click(element) { // notice element
    alert(element + ' clicked');
}

任何帮助真的很感激

谢谢

编辑

我已经尝试了以下并且在调试中“elem”是未定义的……

 $('.clear').bind('click', clear_click($(this)));

   function clear_click(elem)
   {
        alert(elem.attr("id"));
   }

工作解决方案

我有有效的解决方案,但我不完全明白为什么,我很想知道它为什么有效..

首先我试过了

 $('.clear').bind('click', clear_click($(this)) );

这似乎工作“但是”当我加载页面时它进入“clear_click”方法而不被点击 - 奇怪……

然后我试了这个..

  $('.clear').bind('click', function() { clear_click($(this)) } );

这很好用!但我不明白为什么我必须传递一个函数,然后在这个函数中调用我的 clear_click。

谁能解释为什么 1 有效而另一个无效?

每当我需要调用回调函数或类似函数时,我应该先打开一个 function() 然后调用函数内部的方法吗?

原文由 mark smith 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 179
1 个回答
$(".yourclass").click ( function() {
    $(this).attr ( "id" ); //S(this) returns the current element
});

你可以这样编码

$('.yourclass').bind('click', function() { submit_click($(this)) });

function submit_click(elem)
{
    alert ( elem.attr ("id" ) );
}

编辑

   $('.clear').bind('click', function() { clear_click($(this)) });

   function clear_click(elem)
   {
        alert(elem.attr("id"));
   }

这对你来说很好用。

原文由 rahul 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题