如何伪造动态元素的点击?

时间:2012-02-19 16:01:14

标签: ajax jquery

在静态元素上,假冒点击,我使用

$(selector).click();

但是我如何在动态元素上做同样的事情(由ajax调用产生)?

5 个答案:

答案 0 :(得分:3)

同样......:

$(selector).click();

你为什么不先试试?

P.S。它不会被称为 fake 点击,它被称为触发器点击事件。

$(selector).trigger('click'); == $(selector).click();

<强>更新

您需要将该元素绑定到事件的回调以使其起作用:

$(selector).click(function(){...});
$(selector).click();

如果您想让它自动分配给静态元素的click回调,您应该使用on \ delegate(或live但不推荐使用它当你附加点击回调时。

$('body').on('click', 'selector', function(){...})

相反,如果body使用最接近的静态元素,则保留选择器元素。

查看我的 DEMO

答案 1 :(得分:0)

在你的ajax成功函数中

尝试你的代码:

$(selector).click();

答案 2 :(得分:0)

不知道我是否理解(我很抱歉......)

但请尝试:

 $(selector).live('click',function(){}); // deprecated it seems

使用live()演示gdoron:http://jsfiddle.net/Rx2h7/1/

答案 3 :(得分:0)

根据您之前提出的问题:How can I select a list of DOM objects render from an AJAX call?

$(document).ready(function(){
     var listItems = $('#myList li a');
     var containers = $('#myContainer > div');

     listItems.click(function(e){//do someting
     });

etc...

如果您尝试将单击处理程序附加到的元素应该位于上述两个变量中的任何一个内部,那么您必须在将元素插入DOM后更新这些变量,因为它现在只是元素第一页加载期间存在的内容将在这些变量中。

这是我能想到为什么会这样的原因的唯一原因:

$(document).on('click', listItems, function(e) {//do something
});

不起作用!

答案 4 :(得分:0)

使用jquery的on()方法,

staticElement.on(&#39;点击&#39;,选择器,功能(){})

方法

在动态创建的元素上生成click事件,方法是将其附加到DOM中的静态元素。

如需进一步参考,请查看 - https://api.jquery.com/on/