jQuery:触发器click()不起作用?

为什么单击trigger1trigger2不会点击open

 trigger1 trigger2 open 

使用ready ( trigger3 )也不起作用:

 trigger3 

 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(); }); }); 

重要的是澄清做jQuery('#open').click()不执行锚标记的href属性,因此不会被重定向。 它执行#openonclick事件。

你可以通过给#open点击事件来完成重定向和使用原始jQuery('#open').click()代码的#open

 jQuery('#open').click( function (e) { window.location.href = this.href; }); 

从您的代码看起来,您希望当用户点击链接一或两个(触发器1或2)时,您希望遵循open的链接?

如果是这种情况, .click()实际上并不是你想要的函数,事实上jQuery似乎没有提供直接点击一个锚元素的方法。 它将做什么是触发附加到元素的任何事件。

看看这个例子:

 trigger open 

jQuery的:

 $('#open').click(function(){ alert('I just got clicked!'); }); 

试试吧

因此,有一个事件附加到ID open的元素,只是警告说它被点击了。 单击触发器链接只会触发ID open的元素上的click事件。 所以它不会做你想要的! 它将触发任何事件,但实际上不会跟随链接
我删除了第二个触发器,因为.click()只是.trigger('click')的代理,所以他们做同样的事情!

因此,要触发锚点的实际点击,您将需要做更多的工作。 为了使这个可重用性稍微提高,我会稍微更改一下你的HTML (我稍后会说明原因)

 trigger google google 

trigger bing bing

jQuery (最短)

 $('.trigger').click(function(e){ e.preventDefault(); window.location = $($(this).attr('rel')).attr('href'); }); 

试试吧

要么:

 $('.trigger').click(function(e){ e.preventDefault(); var obj = $(this).attr('rel'); var link = $(obj).attr('href'); window.location = link; }); 

试试吧

基本上任何你想要跟随另一个元素的链接都会添加class="trigger" ,这样它就可以重用了。 在您添加class的元素中,添加一个rel="#element-to-be-clicked"这将允许您在不同的链接上设置多次点击。

  • 因此,您现在使用class="trigger"捕获元素上的任何点击
  • 找到想要点击的元素rel="#element-to-be-clicked"
  • 从元素中获取href地址
  • 将Windows位置更改为新链接

尝试删除onclick="jQuery('#open').click();"

还尝试使用$('#trigger1')你正在使用jQuery('#trigger3')

在这里JSFIDDLE 。

你是绑定事件click #trigger3 两次 。 删除其中一个

试试这个:

 jQuery(document).ready(function(){ jQuery('#trigger3').bind('click', function(){ jQuery('#open').text('to be fired'); /* works */ jQuery('#open').click(); }); jQuery('#trigger3').click(function(){ jQuery('#open').text('to be fired'); /* works */ jQuery('#open').click(); }); }); 

jQuery(’#open’)。html(’被解雇’); 将更改为仅文本。 这就是为什么第二个选择不起作用的原因。

根据href内容,有3种类型的链接:

1) href是一个url
2) href是一个javascript调用,如“javascript:”
3) href没用(“#”,“javascript:void(0)”,…),该函数直接绑定在链接上

这就是为什么我让这个小插件调用好方法:

 (function( $ ){ $.fn.triggerClick = function() { var href = $(this).attr('href'); //No useful link into href, try to call js click if(href.indexOf('#') == 0 || href.indexOf('javascript:void(') == 0 || href == '') { $(this).click(); //JS call } else if(href.indexOf('javascript:') == 0) { eval(href); //URL } else { document.location.href = href; } }; })( jQuery ); 

要调用它,只需使用$('DOMelement').triggerClick()
希望这可以帮助。 (这个插件是原型。感谢告诉我是否有错误…)