2014-01-11 146 views
0

我目前正在为一个网站做一个插件,但我偶然发现了一个问题: 我的插件需要模拟点击一个div,但div只会出现,如果你是悬停在另一个div。我试过jQuery模拟悬停和点击

$("#id-1").trigger("mouseover"); 
$("#id-2").click(); 

但它并没有真正的工作,因为盒子立即消失了。

有没有什么办法可以做到这一点?

在此先感谢!

编辑:$(“#id-2”)不仅仅是不可见的,它不再存在于元素中,它们使用一些代码将其删除并将其放回原位(“#id-1”)

+0

也许试试'$('#id-1:visible')。click();' – mutex36

+1

点击div是做什么的?如果它调用了一个javascript函数,你不能直接调用它吗? – TiiJ7

+0

我想让它调用这个函数,但是站点的所有者使用压缩代码,并且他们每隔几天更新一次,而且我担心函数的名字会改变 – L0laapk3

回答

1

如果你有权访问CSS文件,你可以使用悬停类来做到这一点,假设它们是兄弟姐妹(可以修改为使用父子关系),并且他们使用display:blockdisplay:hidden隐藏/显示隐藏的元素

/* CSS */ 
elemOne:hover ~ div, .hover ~ div { display:block; } // Applies on hover or if 
                // hover class 
/* jQuery */ 
$('elemOne').addClass('hover'); // Initialize the hover state 
$('elemTwo').trigger('click'); // Click the now-showing element 
$('elemOne').removeClass('hover'); // Remove the hover state 

Demo

+0

可悲的是我没有访问权限的CSS文件,但我已经找到了一种方法来解决它,所以我不必处理这个:) – L0laapk3

+1

@ L0lappk3然后分享解决方案。另一个“nvm。解决了它!” – norcalli

+0

我在这个问题上采取了完全不同的方法,这就是为什么我没有把它放在这里,它不能真正帮助其他人。 – L0laapk3