我有以下javascript和以下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>
注意:我还尝试使用触发器,将open
类添加到linkLogin
元素,以便显示,切换类,其中没有一个工作...
答案 0 :(得分: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
}
答案 1 :(得分:1)
$('#fantasyLink').on('clic', function ()
似乎错了。应该是click
。
答案 2 :(得分:0)
我发表评论,但我需要更多的代表点!
只是为了确认,是最初的onclick射击?如果不是,有时候我觉得这样做效果更好,即使它们都有效:
$(document).on('click', '#fantasyLink', function (){ ..
答案 3 :(得分:0)
我刚开始工作:
$('#fantasyLink').on('click', function (e){
e.stopPropagation();
$('#dropLogin').trigger( "click" );
}
那stopPropagation
似乎成了伎俩,但如果有人能够解释它会受到高度赞赏的原因。