Javascript 单击文档上的检测';s添加元素

Javascript 单击文档上的检测';s添加元素,javascript,jquery,Javascript,Jquery,我目前正在使用我的页面脚本,其中一个元素是添加和单击不同的元素,如文本、div和图像 开始时,使用jQuery hide方法隐藏所有内容,并且只显示一个输入。如果每件事都是正确的,那么剩下的就显示出来了——现在你可以添加新元素了。在我的html文档中,我使用的方法如下所示: $(document).ready(function() { hideUnused(); $('#file_upload').uploadify({ //all

我目前正在使用我的页面脚本,其中一个元素是添加和单击不同的元素,如文本、div和图像

开始时,使用jQuery hide方法隐藏所有内容,并且只显示一个输入。如果每件事都是正确的,那么剩下的就显示出来了——现在你可以添加新元素了。在我的html文档中,我使用的方法如下所示:

$(document).ready(function() {
          hideUnused();
          $('#file_upload').uploadify({
            //all stuff from uploadify <- not important now
          })
          document.onclick = function (evt) {
            ClickDocument(evt); //<- important now
           };})
只测试它是非常简单的。 有人知道我能用它做什么吗

哦,我忘了提到一件事——我一直在测试现场活动,但它不符合我的期望。它不适用于显示/隐藏方法

非常感谢您的关注和帮助

编辑:

正如我被建议的那样,我以两种不同的方式使用了
.delegate()
方法。两者都改变了旧的html代码
$(文档).ready(函数()
进入
$(“body”).delegate(“.kElement”、“click”、function(evt){
作为我希望在单击时具有额外操作的类元素是kElement。 第一个看起来是这样的:

$("body").delegate(".kElement","click", function(evt){
               e = evt || event;   
                var target = e.target || e.srcElement;
                alert(target.nodeName);

           })
$("body").delegate(".kElement","click", function(evt){
               ClickDocument(evt);                
           })
第二个看起来是这样的:

$("body").delegate(".kElement","click", function(evt){
               e = evt || event;   
                var target = e.target || e.srcElement;
                alert(target.nodeName);

           })
$("body").delegate(".kElement","click", function(evt){
               ClickDocument(evt);                
           })

因此,当我单击我的对象时,它应该显示警报,但它没有。我做错了什么?

在附加/绑定单击事件时,使用而不是
.bind()


.live()
将确保事件也适用于将来的所有元素。

如果您在以后向页面添加元素并要求事件工作,则需要使用事件委派。简而言之,这意味着将事件附加到元素集合的父元素,然后检查是否有任何chil德伦已经被点击了

比如说

<div class="parent">
   <div class="child"></div>
   <div class="child"></div>
   <div class="child"></div>
</div>
.on()和.off()方法是在jQuery中处理事件的较新且首选的方法(因为您也可以分配普通事件),但是如果您使用的是较旧版本的jQuery,那么您会这样做


避免使用.live(),因为它的性能不如.delegate(),并且存在链接问题(以及被弃用)。

但正如我前面所说,如果我添加
。live()
而不是
show()
hide())
不起作用。但是仍然使用这种方法,我在将我的想法应用到应用程序中时遇到了问题。我已经编辑了我的问题,以说明我的意思。关于编辑,如果在
.ready()元素之前调用代码,那么您仍然应该将委派代码包装在
.ready()函数中
功能。