[英]Simulate user click on anchor tag with jQuery from console
我试图模拟用户单击按钮(从控制台),但无法进行任何操作。
首先,访问chegg.com (使用Chrome)。 接下来,检查页面元素并切换设备,以打开Chrome的移动设备模拟器(我们需要移动网站)。
我想使用jQuery单击汉堡包菜单(三行堆叠),但是我在控制台中输入的内容均无法执行此操作(该解决方案必须在控制台中工作) 。 该元素如下所示:
<a href="javascript:;" title="More ..." class="nav icon More">Navigate</a>
最初我以为href="javascript:;"
这就是造成问题的原因(我意识到通常不应该这样,但是我正在抓住稻草),但是经过一些测试之后,情况似乎并非如此。
我尝试了以下方法:
$('a.nav.icon.More').click()
$('a.nav.icon.More')[0].click()
$('a.nav.icon.More').trigger() // returns error
$('a.nav.icon.More').mousedown()
如果事件侦听器附加到其中的一个上,但我也尝试过单击parents元素,但无济于事。 谁能指出我正确的方向?
<div class="more-item nav-item active">
<div class="header">More <span class="arrow-down"></span></div>
<div class="carrot">
<div class="carrot-inner"></div>
</div>
<div class="more-hover-content hover-box">
<ul>
<li><a href="http://www.chegg.com/signup/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signup">Create an account</a></li>
<li><a href="http://www.chegg.com/login/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signin hide-initially">Sign in</a></li>
<li><a href="http://www.chegg.com/login/?redirect=/my/account/returnbooks" class="track-returnbooks" data-noajax="">Return your books</a></li>
<li><a href="http://www.chegg.com/sell-textbooks" class="track-selltextbooks" data-noajax="">Sell your books</a></li>
<li><a href="http://www.chegg.com/contactus" class="track-help" data-noajax="">Help</a></li>
</ul>
</div
您必须调用“点击容器标签”
尝试这个
$(".more-item.nav-item").click()
这确实是一个奇怪的问题。 正如您所注意到的,所有通常的点击方式均无效。 我对这里发布的“答案”感到惊讶,因为从尝试这些答案显然可以看出,这些答案都不适合您所链接的网站。
查看源代码,似乎网站的JS以非传统方式对事件绑定进行了一些奇怪的操作(例如,将show / hide菜单事件绑定到ns.CLICK
事件上的hamburger
,而不是传统的click
事件上) )。 每当我单击并重新单击菜单时,浏览器的前进和后退按钮也会更改,这也很奇怪,这使我觉得实现路由和历史记录的方式有些奇怪。
因此,您不会发疯:)我想不出一种简单的方法来触发对网站的单击,但是从JS中,我们还可以看到click事件等效于从ExtendedNav
切换hidden
类。 因此,如果您希望获得与单击相同的操作,则可以调用$('.ExtendedNav').toggleClass('hidden')
。
触发器是最好的选择之一。 但是,您应该将事件作为参数传递:
$('a.nav.icon.More').trigger('click');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.