2017-02-10 19 views
0

我正在编写一个用户脚本,它会调用一个调用Ajax更新的按钮上的.click(),我需要对由此Ajax更新加载的按钮上的.click()。ajax加载内容后,无法在我的代码中执行.click()我想点击

这是我使用的代码:

document.querySelectorAll('#main > div:nth-child(6) > input:nth-child(6)')[0].click(); 
setTimeout(function() { document.querySelectorAll('#main > div:nth-child(6) > input:nth-child(8)')[0].click(); }, 1000); 

编辑:我忘了提,脚本两页通过点击之间跳跃。第一个工作,但第二个.click()返回我试图.click()的按钮是未定义的。所以我认为我有一个糟糕的选择器,并从Chrome开发工具中复制它。但问题仍然存在。有人建议将.click()放入Ajax回调中,但我还需要插入将此.click()插入到现在按钮中的代码,并且它会永远持续下去。

+0

将调用'.click()'的代码放到AJAX回调中,在它更新DOM之后。 – Barmar

回答

0

看起来你已经离开了你的代码片段(也很高兴看到它的格式)。在你的ajax调用中,你应该把它放在你的“成功”块中。

您想触发按钮上已存在的侦听器的单击。首先,您将绑定您的监听器,然后在用户操作中您将触发单击。

$.ajax({ 
     url: 'MyURL', 
     contentType: 'YourContentType', 
     type: 'GETorPOST', 
     dataType: 'yourDataType'}) 
    .success(function (result) { 
     $("#myButton").trigger("click"); 
     OR 
     clickYourButtonFunction(); 
    }) 
    .error(function (xhr, status) { 
     console.log(status); 
    }); 
相关问题