2014-11-02 81 views
-2

在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次點擊。

+0

應該發生什麼? – undefined 2014-11-02 14:04:33

+0

你是否在頁面加載後用js或jquery更新任何html元素? – 2014-11-02 14:04:54

+0

Vohuman,很多事情......工作職能。 – 2014-11-02 14:07:00

回答

0

如果您在頁面加載後立即運行這些功能,$(document).ready()將不夠用。文檔準備就緒後,您必須在元素加載後綁定事件。所以,可以肯定的元素已加載使用$(window).load()

例如:在觸發click事件

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

但是,不需要將'$(window).load()'包裝到'$(document).ready()'中。 – 2014-11-02 15:08:27

+0

'$(document).ready()'就足夠了,它會加載整個DOM。這不像我們正在等待加載圖像或其他東西。 – 2014-11-02 15:13:41

0

所以,如果我理解正確,這2點擊應該只有發生在頁面加載,對不對?如果是這樣,你可以嘗試直接調用事件處理函數嗎?

$(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嘗試不應該工作。你確定代碼正在執行?你確定你在之後觸發了這些點擊嗎?你綁定了你的點擊處理程序?

相關問題