如何在同一元素上触发多次点击?

时间:2014-11-02 14:00:35

标签: javascript jquery

在Javascript代码中我有这个字符串:

$('.promo_menu:nth-child(1)').click();
$('.avatar_0').click();

问题是数据行应模拟某些光束的2次点击。但没有点击。

我试着写这样的东西:

$('.promo_menu:nth-child(1)').trigger('click');
$('.avatar_0').trigger('click');

但结果没有改变,点击不起作用。

但是在页面完全加载后我将在控制台中编写代码:

$('.promo_menu:nth-child(1)').trigger('click');
$('.avatar_0').trigger('click');

点击了所有内容。 我尝试使用此代码来运行$(document).ready(){};

$(document).ready(function(){
        $('.promo_menu:nth-child(1)').click();
        $('.avatar_0').click();
});

没有结果...... 怎么能解决这种情况?我在加载页面时需要点击2次。

2 个答案:

答案 0 :(得分:0)

所以,如果我理解正确,这两次点击应该在页面加载时发生,对吗?如果是这样,你可以尝试直接调用事件处理函数吗?

$(function () {
   $('.promo_menu').on('click', promoMenuClickHandler);
   $('.avatar_0').on('click', avatarClickHandler);

   // call handler, preserving 'this' context
   promoMenuClickHandler.call($('.promo_menu:nth-child(1)')[0]);
   avatarClickHandler.call($('.avatar_0')[0]);


   function promoMenuClickHandler() {
     // ...
   }

   function avatarClickHandler() {
     // ...
   }
});

注意:上面的代码只是qeustion中提供的大致两行代码的示例。)

话虽如此,你的.trigger尝试也没有理由不起作用。你确定代码正在执行吗?您确定在绑定点击处理程序后触发了这些点击吗?

答案 1 :(得分:0)

如果您在加载页面后立即运行这些功能,$(document).ready()将是不够的。文档准备就绪后,必须在加载元素后绑定事件。因此,要确保元素已加载使用$(window).load()

示例:

$(document).ready(function()
{
    $(window).load(function()
    {
        $('.promo_menu:nth-child(1)').click();
        $('.avatar_0').click();
    });
});