jQuery-如何将事件绑定到稍后显示的隐藏元素?

问题描述

| 我试图将\'click \'事件附加到特定类的所有元素。问题是绑定事件时,某些元素位于选项卡上处于隐藏状态(显示:无)。 (.bind())。似乎当显示这些元素时,事件不再受约束。
$(\'a.someClass\').bind(\'click\',function(){
  alert(\"test\");
});
隐藏的元素似乎没有绑定单击事件。如果我选择隐藏元素:
$(\'a.someClass:hidden\').bind(\'click\',function(){
  alert(\"test\");
});
当这些元素不再隐藏时,单击事件似乎没有绑定。有人经历过吗?无论元素的显示属性如何,都有没有办法绑定和事件到元素? 谢谢     

解决方法

两年后编辑:正如某些人指出的那样,现在不赞成使用
Live
函数(您也可以在链接的文档页面的顶部看到)。当前版本的正确事件处理程序名称为
On
。请参见Maxim的答案以获取一个很好的例子。 原始答案: 您是否尝试过使用Live()?
.live(\'click\',function(){/* code */});
?  版本说明:
live
已在jQuery 1.7中弃用,并已在jQuery 1.9中删除。此答案仅对早于jQuery 1.7的jQuery版本正确     ,从jQuery 1.7开始,不推荐使用
.live()
方法。 您现在可以使用
.on()
方法。通过将委托事件附加到在运行jQuery时在HTML中可见的元素。 因此,如果在运行jQuery时ѭ8处于隐藏状态,则应将委托事件附加到主体上,以便将来在有可见的view8ѭ元素时它将运行,例如:
$(\'body\').on(\'click\',\'input.a.someClass\',function(){
  alert(\"test\");
});
    ,使用委托(请注意,这是在取消隐藏它们之后):
$(\'body\').delegate(\'.someClass\',\'click\',function (evt) {
    // do something here
});
    ,采用
$(\'parentelement\').on(\'click\',\'taget element\',function(){

})
load13ѭ应该在页面加载时可见     ,根据http://api.jquery.com/live/上的jquery文档   现在和将来为与当前选择器匹配的所有元素的事件添加处理程序 这是一个如何使用它的示例:
<!DOCTYPE html> 
<html> 
<head> 
  <style> 
  p { background:yellow; font-weight:bold; cursor:pointer;  
          padding:5px; } 
  p.over { background: #ccc; } 
  span { color:red; } 
  </style> 
  <script src=\"http://code.jquery.com/jquery-1.5.js\"></script> 
</head> 
<body> 
  <p>Click me!</p> 

  <span></span> 
<script> 
    $(\"p\").live(\"click\",function(){ 
      $(this).after(\"<p>Another paragraph!</p>\"); 
    }); 
</script> 

</body> 
</html>
    ,时间已经改变,现在可以使用\“。on \”来完成
.on(\'click\',function(){/* code */});