我想使用jQuery单击一个跨度。(我使用的是rails和foundation)
<div class = "row my-row" id="current-my-row">
<div class = "large-12 my-row-heading" id="my-row-click">
<%= image_tag "some_img.png"%>
<span class="title">This is the title</span>
<span class="details"><%= image_tag "other_img.png"%>DETAILS</span>
</div>
<div class = "large-12 my-row-details">
all details
</div>
</div>
我有一个jQuery函数:
$('.details').on("click", function() {
.... whatever I want it to do...
//my-row-details slides down.
}
点击“详细信息”,我想让它做的任何事情都会发生。
但是,作为另一个jQuery函数的一部分,我想触发对它的单击。
我试过了:
$('.details').click();
$('.details').trigger("click");
$('#my-row-click .details').click();
$('#my-row-click').trigger("click");
$('.details').trigger("click");
$('#my-row-click > span:nth-child(3)').click();
$('#my-row-click > span:nth-child(3)').trigger("click");
但我似乎不能触发点击。也就是说,my-row-details不会向下滑动。
有什么帮助吗?
更新:注释了所有其他代码:(假设这就是单击所做的所有函数)
$('.details').on("click", function() {
$('.my-row-details').slideDown();
}
我没有触发点击,而是尝试用下面这行代码替换它:
`$('.my-row-details').slideDown();`
这也行不通。但如果我真的点击“详细信息”,它就会起作用。
发布于 2016-09-14 11:46:03
.click()
和.trigger("click");
实际上都应该可以工作。
但是,触发在您自己的代码中定义的事件听起来不是一个好主意。
有一种更好的方法可以做到这一点:
function openDetails() {
// Whatever you want to do
}
$('.details').on("click", openDetails);
“作为另一个jquery函数的一部分”:
openDetails();
这样,您就可以确保以清晰和可读的方式实现此行为。
发布于 2016-09-14 13:52:57
找到了问题所在。
调用click()的函数将在页面加载时执行。不是在活动上。而且我还在页面加载时指定了$('.my-row-details').hide();
。他们两个都互相矛盾。
解决方案是在css中为my-row-details指定display: none
。然后从jquery调用.click();
。
发布于 2016-09-14 12:53:44
首先通过在click函数中保留一个警告来检查该跨度的click是否工作,如果它不工作,则尝试以下操作
$('.details').live('click', function(){ //your logic goes here });
或您可以试用此$(".details").bind("click", function(){ //your logic });
希望它能起作用
https://stackoverflow.com/questions/39482139
复制相似问题