为什么单击trigger1并且trigger2不点击open?
<a id="trigger1" href="#" onclick="jQuery('#open').trigger('click');">trigger1</a>
<a id="trigger2" href="#" onclick="jQuery('#open').click();">trigger2</a>
<a id="open" href="http://google.com">open</a>
Run Code Online (Sandbox Code Playgroud)
使用ready(trigger3)也不起作用:
<a id="trigger3" href="#">trigger3</a>
Run Code Online (Sandbox Code Playgroud)
...
jQuery(document).ready(function(){
jQuery('#trigger3').bind('click', function(){
jQuery('#open').html('to be fired'); /* works */
jQuery('#open').click();
});
jQuery('#trigger3').click(function(){
jQuery('#open').html('to be fired'); /* works */
jQuery('#open').click();
});
});
Run Code Online (Sandbox Code Playgroud)
Jak*_*ake 22
重要的是要澄清,do jQuery('#open').click()不会执行锚标记的href属性,因此您不会被重定向.它执行未定义的onclick事件#open.
您可以jQuery('#open').click()通过发出#open单击事件来完成重定向以及使用原始代码进行重定向的能力:
jQuery('#open').click( function (e) {
window.location.href = this.href;
});
Run Code Online (Sandbox Code Playgroud)
从您的代码看起来,您希望当用户点击链接一或两个(触发器1或2)时,您希望open遵循链接?
如果是这种情况,.click()实际上并不是你想要的功能,事实上jQuery似乎没有提供直接点击一个锚元素的方法.它将做什么是触发附加到元素的任何事件.
看看这个例子:
<a id="trigger" href="#" onclick="$('#open').click();">trigger</a>
<a id="open" href="http://google.com">open</a>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$('#open').click(function(){
alert('I just got clicked!');
});
Run Code Online (Sandbox Code Playgroud)
因此,有一个事件附加到具有ID的元素,open它只是警告说它被点击了.单击触发器链接只会触发具有ID的元素上的click事件open.所以它不会做你想要的!它将触发任何事件,但它实际上不会跟随我删除第二个触发器的链接,
因为.click()它只是一个代理,.trigger('click')所以他们做同样的事情!
因此,要触发锚点的实际点击,您将需要做更多的工作.为了使这个可重用性稍微提高,我会稍微改变你的HTML (稍后我会说明原因):
<a href="#" class="trigger" rel="#open">trigger google</a>
<a id="open" href="http://google.com">google</a>
<br/><br/>
<a href="#" class="trigger" rel="#bing">trigger bing</a>
<a id="bing" href="http://bing.com">bing</a>
Run Code Online (Sandbox Code Playgroud)
jQuery (最短):
$('.trigger').click(function(e){
e.preventDefault();
window.location = $($(this).attr('rel')).attr('href');
});
Run Code Online (Sandbox Code Playgroud)
要么:
$('.trigger').click(function(e){
e.preventDefault();
var obj = $(this).attr('rel');
var link = $(obj).attr('href');
window.location = link;
});
Run Code Online (Sandbox Code Playgroud)
基本上任何你想要跟随另一个元素的链接都添加class="trigger"到了,这样它就可以重用了.在您添加了classto 的元素中,添加rel="#element-to-be-clicked"此元素可以让您在不同的链接上设置多次点击.
class="trigger"rel="#element-to-be-clicked"href从元素中获取地址| 归档时间: |
|
| 查看次数: |
27102 次 |
| 最近记录: |