2016-07-15 139 views
1

上我有以下的javascript和下面的HTML代碼摘錄。我與fantasyLink ID的元素,我希望它被點擊,li下拉菜單可顯示但當它不會做任何事情,但是當我在控制檯上運行的代碼,它的作用。被點擊的元素在圖像中圈出來。問題下拉菜單裏

enter image description here

enter image description here

$(document).ready(function() { 
 
    $('#fantasyLink').on('click', function(){ 
 
       $('body').find('#dropLogin').click(); 
 
    }); 
 
});
<li class="dropdown" id="linkLogin"> 
 
           <a id="dropLogin" href="#" class="dropdown-toggle" data-toggle="dropdown"><b>Login</b> <span class="caret"></span></a> 
 
           <ul id="login-dp" class="dropdown-menu"> 
 
            <li> 
 
             <div class="row"> 
 
              <div class="col-md-12"> 
 
               <div id="message"></div> 
 
               <label class="label-login">Iniciar sesión con:</label> 
 
               <div class="social-buttons"> 
 
                <fb:login-button scope="public_profile,email" data-size="xlarge" onlogin="checkLoginState();" class="btn"> 
 
                 Facebook 
 
                </fb:login-button> 
 
               </div>

注:我也曾嘗試使用觸發器,加入open類的linkLogin元素,使其顯示,切換類,無他們工作...

+0

如果你CONSOLE.LOG你的函數裏面做你輸出 ?也許嘗試event.preventDefault();停止默認行爲。 –

+0

是的,我得到的輸出,仍然無法阻止默認行爲,並且「登錄」文本顏色改變,就好像鼠標在它上面一樣。 –

+0

嘗試$('body')。find('#dropLogin')。trigger(「click」); –

回答

0

我剛剛得到它的工作:

$('#fantasyLink').on('click', function (e){ 
    e.stopPropagation(); 
    $('#dropLogin').trigger("click"); 
} 

stopPropagation似乎使的伎倆,但如果有人可以解釋這將是非常感謝的原因。

+0

只留下'$('#dropLogin')。click();'沒有工作... –

1

$('#fantasyLink').on('clic', function()似乎是錯誤的。應該是click

+1

應該*點擊 –

+0

這是我的錯誤,但仍然沒有使用'clic'。 –

+1

@AarónGutiérrez不,我認爲Ulf犯了一個錯誤。他的意思是說你必須編寫$('#fantasyLink')。('click',function())。它總是拼寫爲「點擊」 –

0

我要發表評論,但我需要一些更多的代表處點!

只是爲了確認,是初始的onclick射擊?如果不是有時我覺得這是更好地工作,即使他們都應該工作:

$(document).on('click', '#fantasyLink', function(){ ..

+0

是的,最初的onclick射擊,我跑了一個「console.log」裏面檢查... –

3

你不應該需要做$('body').find('#dropLogin').click()

由於對.find()返回對象的數組,將工作的方式是,如果你做的事:$('body').find('#dropLogin')[0].click()

但是,你不應該需要做的。只需 -

$('#dropLogin').click(); 

這應該爲你做那個技巧。這是jQuery和選擇器的美麗,如果你有一個ID你不需要搜索DOM,只需使用選擇器即可。的

或者而是採用了click事件,從它看起來像只被點擊程序你可以創建一個簡單的功能 -

$(document).on('click', '#fantasyLink', function() { 
    dropLogin(); 
}); 

var dropLogin = function() { 
    //do something 
} 
+0

你是對的,但使用'$('#fantasyLink')。click(); '沒有工作,使用'e.stopPropagation();'在啓動click事件之前爲我做了工作。 –

+0

@AarónGutiérrez所以我認爲這與多個點擊事件有關。 'ie'一個點擊事件以編程方式點擊另一個點擊事件。我會建議嘗試使用替代方案。你還應該爲'dropLogin'發佈你的'click()'函數。但是看起來你創建一個click事件函數似乎沒有意義,只能通過一個不同的點擊函數來調用。 – Adjit

+0

非常感謝你! –