【问题标题】:window.location malfunctions when triggering a jQuery click programmatically以编程方式触发 jQuery 单击时 window.location 发生故障
【发布时间】:2012-09-11 11:37:08
【问题描述】:

考虑一下这个 HTML

<table id="search_results">
    <tr><td><a href="reports.php" style="display:none">_</a>Report 1</td></tr>
</table>

我编写了代码,当鼠标单击其父 (TR) 包含带有 href 属性的 A 标记的 TD 时,窗口将重定向到该页面:

//Set row clicking
$('table#search_results td').click(function () {
    var href = $(this).parent().find('a').attr("href");
    if (href) { window.location = href; }
});

当用户点击 TD 时,此代码完美运行。但是我已经编写了在按下返回按钮时触发点击事件的代码。

$(document).keypress(function(e) {
    if(e.which == 13) {
        $('table#search_results tr:not([class=vanish]) td:first').click();
    }
});

我已经调试了代码。当按下返回按钮时,单击事件实际上被触发并且 href 变量被正确填充但是页面只是用 ?在 URL 的末尾而不是被重定向到设置的 href...(例如,如果我在“index.php”中并打算转到“reports.php”,而不是去那里,页面会用 url 刷新“index.php?”

为什么会这样?

【问题讨论】:

    标签: jquery events redirect triggers window.location


    【解决方案1】:

    我认为你的意思是:

    $(selector).trigger("click");
    

    还有:

    window.location 是一个对象。您可能想要设置的是 window.location.href

    http://davidwalsh.name/javascript-window-location

    【讨论】:

    • 所以问题可能是“this”的上下文不同..尝试创建一个jsfiddle和console.log($(this))
    • 上下文是正确的,因为正如我所提到的,href 变量被正确地填充了正确的 URL。
    • 那么剩下的就是“window.location = href;”
    • 你确定不是其他东西破坏了你的脚本吗?它似乎在这里工作:jsfiddle.net/KKJP6/3
    • 我创建了这个 jsfiddle,它在 jsfiddle 中为我工作:jsfiddle.net/876ae/16。但是我仍然不明白为什么它在我的网站上不起作用...调试了我的 PHP 以查看它是否转到正确的页面而不是重定向回来...但是没有..同一页面正在刷新而不会去点击的网址...
    【解决方案2】:

    修复它..我的错误...

    本机表单提交正在接管 jquery 代码,即使表单没有任何操作并且任何地方都没有提交按钮。我所要做的就是添加 onsubmit="return false;"在表格中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多