【问题标题】:Trigger a click event into a click handler on links将点击事件触发到链接上的点击处理程序中
【发布时间】:2014-07-25 13:56:12
【问题描述】:

我有一个这样的链接:

 <a id="downloadReport" href="">Download</a>

我想做的是在点击链接时通过AJAX请求更新元素的href属性,然后触发点击事件跟随链接。这是Javascript代码:

$("#downloadReport").click(function(event)
{
    console.log($(this).attr('href'));
    if ($(this).attr('href') == "")
    {
        event.preventDefault();
        var year = parseInt($("#reportYears").val());

        if (year != 0)
        {
            $.post(
                "/Trainings/getReport",
                {data: year},
                function(data)
                {
                    $("#downloadReport").attr('href', data.trim());
                    $("#downloadReport").click();
                });
        }
    }
    return true;
});

所以通常行为应该是:

  1. 点击链接
  2. href 已打印
  3. href 为空 -> 输入 if
  4. 默认点击事件被阻止
  5. AJAX 请求
  6. href 已更新
  7. 点击事件被触发
  8. href 已打印
  9. href 不为空
  10. return true -> 链接应该被关注

我得到一个空字符串,然后是输出中的一个有效链接,因此 AJAX 请求和点击事件触发器有效,但第二个事件没有遵循该链接。 如果返回 true 不应该触发默认事件吗?

【问题讨论】:

  • 改用window.location就行了,为什么还要通过DOM呢?
  • 为什么一定要重新触发点击事件?你可以简单地做一个window.location
  • 我不想做一个 window.location 因为我想保留当前窗口

标签: javascript jquery html ajax


【解决方案1】:

$("#downloadReport").click(); 将触发附加到它的 jquery 处理程序。您需要使用 dom click 事件才能重定向到新的 href。像这样使用

$("#downloadReport")[0].click();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多