触发单击jquery无法正常工作
我正在弄清楚为什么这个简单的脚本不起作用:
jQuery.noConflict(); jQuery(document).ready(function() { jQuery('.next_button a').trigger('click'); });
noConflict
是必要的,因为我还在此页面中加载了prototype / scriptaculous。
如果我用另一个函数替换.trigger('click')
(es: .css(...)
这很有效。只有触发似乎破坏了。
如何通过jquery模拟锚点击? 查看此链接并查看Stevanicus的回答 。
$('a#swaswararedirectlink')[0].click();
您只能触发jQuery创建的单击。 这是jQuery可爱的小怪癖之一。
正如加里所回答的那样。 以下代码无效。
$('#border_wrap').trigger('click'); $('#border_wrap').click(function(e){ console.log("clicked1"); });
但这会.. 🙂
$('#border_wrap').click(function(e){ console.log("clicked1"); }); $('#border_wrap').trigger('click');
我认为这个演示不起作用但确实如此(Chrome 12)。 它将 alert
两条消息,每条消息对应一条消息。一个是由jQuery创建的,一个是原生的,但我认为只能触发jQuery事件。
编辑:是的, click
不跟随href
。
编辑2:因此,您想要手动触发的事件实际上是由Prototype轮播插件创建的事件。 对于下面的代码,我假设它是这个 。 如果是这种情况,为什么你不能只使用Prototype或本机使用fire …这样:
Title jQuery.noConflict(); function fakeClick(event, anchorObj) { if (anchorObj.click) { anchorObj.click() } else if(document.createEvent) { if(event.target !== anchorObj) { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); var allowDefault = anchorObj.dispatchEvent(evt); // you can check allowDefault for false to see if // any handler called evt.preventDefault(). // Firefox will *not* redirect to anchorObj.href // for you. However every other browser will. } } }
在此事件触发演示中有两个示例(一个已注释掉,但您可以切换相同的结果)。 一个来自Trigger,一个使用Prototype的事件 ,使用event.simulate.js
,一个使用来自如何模拟点击到锚标记的fakeClick()
函数? 。 其中任何一个在Chrome 12中都适用于我。