onclick元素,表示尚未创建的元素

时间:2015-07-16 18:49:18

标签: javascript html onclicklistener

我正在使用谷歌搜索API,我希望当您点击图像时,此图像将被复制到其他位置。

我在这里创造了一个小提琴:this article 它以这种方式工作:用户在输入字段中键入一个术语,将显示图像。当他/她点击两次时,它将显示在searchresults div中。

我将onClick事件监听器放到var searchresults = document.getElementById('searchresults'); searchresults.addEventListener("click", function(event){ event.preventDefault(); imageing(); }); div上,因此在开头添加额外的点击。但是,我想让它在第一次点击时显示。

现在,如果我发表评论

gs-image-box

它没有用。图像将是链接。我相信这样做的原因是结果显示在imaging中而尚未创建。我尝试在searchImgOnLoad之类的其他函数中调用public static void removeLeaves(BinaryTreeNode<Integer> root) { BinaryTreeNode<Integer> temp = root; if (root == null) { return; } if (root.left == null && root.right == null) { root = null; } removeLeaves(temp.left); removeLeaves(temp.right); } 函数,但没有任何效果。

我想过使用检查元素是否被点击这里描述的函数http://fiddle.jshell.net/wjewg062/

但我认为必须有一种更简单的方法。

我的想法已经用完了,任何人都可以提出想法或暗示吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

图像是动态创建的吗?看看这篇文章Event binding on dynamically created elements?

简而言之,事件在页面加载时附加到元素。因此,新创建的动态元素(例如Google创建的动态元素)不会附加到事件中。所以谷歌可能有办法规避整个“你需要加载页面以附加事件到元素”的事情,但它需要额外的点击。使用帖子中的语法可以帮助您。

顺便说一下。使用Jquery并不会真正显示您的网站,因为它通常在客户端的浏览器中缓存。

答案 1 :(得分:1)

您需要的信息已经在您的搜索结果eventListener中。即使您在结构中较高的div上添加事件,此target的{​​{1}}也将是您单击的图像。

默认情况下,j event会从event元素(top)一直发送到收到点击的window,然后返回到顶端。作为被单击元素的祖先的任何元素将接收事件信息,因此您可以侦听任何element,但目标仍然是实际单击的元素。

在您的情况下,只需将目标传递给ancestor函数,您就可以应用所需的行为而无需任何额外的操作。

您可能遇到的一个问题是,如果用户点击imageing()而非searchresult元素。然后你会有一个错误,所以你应该处理这些情况。

这样的事情:

img

http://fiddle.jshell.net/pwjLrfnt/3/