我正在使用谷歌搜索API,我希望当您点击图像时,此图像将被复制到其他位置。
我在这里创造了一个小提琴:this article
它以这种方式工作:用户在输入字段中键入一个术语,将显示图像。当他/她点击两次时,它将显示在searchresults
div中。
我将onClick事件监听器放到var searchresults = document.getElementById('searchresults');
searchresults.addEventListener("click", function(event){
event.preventDefault();
imageing();
});
div上,因此在开头添加额外的点击。但是,我想让它在第一次点击时显示。
现在,如果我发表评论
gs-image-box
它没有用。图像将是链接。我相信这样做的原因是结果显示在imaging
中而尚未创建。我尝试在searchImg
或OnLoad
之类的其他函数中调用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/
但我认为必须有一种更简单的方法。
我的想法已经用完了,任何人都可以提出想法或暗示吗?
谢谢!
答案 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