使用jquery触发跨度上的单击

时间:2016-09-14 03:39:07

标签: javascript jquery javascript-events

我想使用jquery单击一个span。 (我使用铁轨和地基)

<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. 
}

点击“DETAILS”,无论我想要它做什么都会发生。

但是,作为另一个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");

但我似乎无法触发点击。即。我的行细节不会下滑。

任何帮助?

更新: 评论了所有其他代码:(假设这是点击的所有功能)

$('.details').on("click", function() {
  $('.my-row-details').slideDown();
}

我尝试用此行替换它,而不是触发点击:      $('.my-row-details').slideDown();

这也不起作用。但是如果我真的点击“DETAILS”

就可以了

3 个答案:

答案 0 :(得分:3)

.click().trigger("click");都应该有效。

然而,触发您自己的代码中定义的事件听起来是个坏主意 有更好的方法:

function openDetails() {
    // Whatever you want to do
}

$('.details').on("click", openDetails);

&#34;作为另一个jquery函数的一部分&#34;:

openDetails();

这样,您可以确保以清晰易读的方式实现此行为。

答案 1 :(得分:0)

首先通过在点击功能中保留警报来检查该范围的点击是否有效,如果它不起作用则尝试此

protected void Page_Load(object sender, EventArgs e) { try { string name = Session["name"].ToString(); string FilePath = Server.MapPath("~/filesPDF/" + name); WebClient client = new WebClient(); Byte[] buffer = client.DownloadData(FilePath); if (buffer != null) { Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("content-length", buffer.Length.ToString()); Response.BinaryWrite(buffer); } } catch (Exception ex) { WebMsgBox.Show(ex.Message); } } 或您可以尝试此$('.details').live('click', function(){ //your logic goes here });

希望它有效

答案 2 :(得分:0)

发现问题。

调用click()的函数是在页面加载时执行的。不是在活动上。我也在页面加载时指定了$('.my-row-details').hide();。他们俩都互相矛盾。

解决方案是在css中为my-row-details指定display: none。然后从jquery中调用.click();