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