2016-07-15 3 views
1

다음 자바 스크립트와 다음 HTML 발췌 코드가 있습니다. 나는 fantasyLink ID를 가진 요소를 가지고 있는데, 클릭했을 때 li 드롭 다운이 표시되지만 아무 것도하지 않지만 콘솔에서 코드를 실행하면 해당 동작이 수행되기를 원합니다. 클릭 된 요소는 이미지에서 원으로 그려져 있습니다. 드롭 다운 리 메뉴의 메뉴

$(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>

enter image description here

enter image description here

참고 : 나는 또한 보여줍니다 있도록 linkLogin 요소에 open 클래스를 추가, 트리거를 사용하여 시도, 클래스, 아무도를 전환하지 그들 중 ...

+0

을 당신이받을 수 있나요 출력? 어쩌면 event.preventDefault(); 기본 동작을 중지합니다. –

+0

예, 출력물을 얻었지만 여전히 기본 동작을 방지하지 못하고 "로그인"텍스트가 마우스 위에있는 것처럼 색상이 변경됩니다. –

+0

$ ('body')를 시도하십시오. find ('# dropLogin'). trigger ("click"); –

답변

0

난 그냥 작동에 도착이 더 잘 작동 내가 찾을 가끔 경우 둘 다 작동한다하더라도 그 이유는 크게 감사 할 것입니다. $('body').find('#dropLogin')[0].click()

그러나, 당신은 그렇게 할 필요가 없습니다 다음 .find()이 객체의 배열을 반환의 때문에

+0

'$ ('dropLogin '). 클릭();'만으로 작동하지 않았습니다 ... –

1

$('#fantasyLink').on('clic', function() 잘못된 것 같습니다. click이어야합니다.

+1

* 클릭 –

+0

그건 내 실수 였지만 여전히 "clic"으로 작업하지 않았습니다. –

+1

@ AarónGutiérrez 아니, 나는 울프가 실수 한 것 같아. 그는 $ ('fantasyLink'). ('click', function())에 $를 써야한다고 말하고자합니다. 항상 "클릭"으로 표기됩니다. –

0

의견을 남기고 싶지만 몇 가지 추가 답변이 필요합니다.

그냥 확인하려면 초기 onclick 발사입니까? stopPropagation 트릭을 할 것으로 보인다

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

그건하지만 경우를 누군가가 설명 할 수 :

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

+0

예, 최초 onclick이 실행 중입니다. 그 안에 "console.log"를 실행하여 확인했습니다 ... –

3

당신은 당신이 한 경우 일 것입니다 방법입니다 $('body').find('#dropLogin').click()

을 할 필요가 없습니다 . 간단히 -

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

그 트릭을 수행해야합니다. 그게 과 선택기의 아름다움입니다. ID이 있으면 DOM을 검색 할 필요가 없습니다. 선택기 만 사용하면됩니다. 또한

대신 click 이벤트를 사용, 만 프로그래밍 그냥 간단한 함수 만들 수 있습니다 클릭 된 것처럼 보이는에서 - 당신이 당신의 함수 내에서 CONSOLE.LOG 경우

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

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

당신 말이 맞지만'$ ('fantasyLink')를 사용하십시오. '작동하지 않았다. e.stopPropagation();을 사용하여 click 이벤트를 시작하기 전에이 작업을 수행했다. –

+0

@ AarónGutiérrez 그래서 여러 번의 클릭 이벤트와 관련이 있다고 생각합니다. 즉 ie 클릭 이벤트는 프로그래밍 방식으로 다른 클릭 이벤트를 클릭합니다. 대안을 사용하려고하는 것이 좋습니다. 'dropLogin'에 대해서도'click()'함수를 게시해야합니다. 그러나 다른 클릭 기능에 의해서만 호출 될 click 이벤트 함수를 생성하는 것이 무의미한 것처럼 보입니다. – Adjit

+0

ver 많은 감사합니다! –