Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML链接和Jquery Live仅在第一次尝试时使用,只需单击一次_Javascript_Live_Jquery - Fatal编程技术网

Javascript HTML链接和Jquery Live仅在第一次尝试时使用,只需单击一次

Javascript HTML链接和Jquery Live仅在第一次尝试时使用,只需单击一次,javascript,live,jquery,Javascript,Live,Jquery,我遇到了链接上jquery live事件绑定的问题。当链接被添加到页面时,它可以正常工作,但是当另一个链接被添加到无序列表时,需要两次单击才能在任一链接上触发单击事件。有什么想法吗 $("div#website-messages ul li a").live("click", function() { var link = $(this); changeTab(link.attr("href")); $(link.attr("title")).focus(); r

我遇到了链接上jquery live事件绑定的问题。当链接被添加到页面时,它可以正常工作,但是当另一个链接被添加到无序列表时,需要两次单击才能在任一链接上触发单击事件。有什么想法吗

$("div#website-messages ul li a").live("click", function() {
    var link = $(this);
    changeTab(link.attr("href"));
    $(link.attr("title")).focus();
    return false;
});
编辑:好的,我已经缩小了问题的范围。如果我去掉return false,事件每次都会触发。问题是页面会跳到顶部。有什么办法可以阻止吗

创建链接的代码:

Validation.validate = function() {
    var html = "";
    for (var i = 0; i < errors.length; i++) {
        html += "<li><a href='" + errors[i].tabid + "' title='" + errors[i].elementID + "'>" + errors[i].message + "</a></li>";
    }
    $("div#website-messages ul").html(html);
}
已解决 我在文本输入上有一个模糊事件,这些文本输入被聚焦到验证它们的位置。如果我点击其中一个错误并聚焦到第一个文本框,然后点击第二个错误,它将聚焦到第二个文本框,但触发模糊事件而不是聚焦。非常感谢你们的帮助和建议,这让我一整天都发疯

编辑:好的,我已经缩小了范围 问题如果我把return false去掉, 事件每次都会触发。这个 问题是页面会跳转到 顶部有什么办法可以阻止吗


试一试


因为它跳到了顶端。。。实际href的内容是什么?如果它类似于“#”,那么它很可能会跳到顶部。如果单击的结果是更改页面上的内容,而不是实际地从页面中导航,则可以考虑使用:

<a href="javascript:void(0)">linky</a>

此阻止链接跳到顶部:

<div id="website-messages">
<ul>
<li><a href="javascript:;" >my link</a></li>
</ul>
</div>
更新:

你的链接应该是这样的:

<li><a id='" + errors[i].elementID + "' href='javascript:;' title='" + errors[i].tabid + "'>" + errors[i].message + "</a></li>

  • 我在文本输入上有一个模糊事件,该文本输入被聚焦到验证它们的文本输入上。如果我单击其中一个错误并聚焦到第一个文本框,然后单击第二个错误,它将聚焦到第二个文本框,但触发模糊事件而不聚焦。

    代码是否运行两次,每个链接一次?尝试在函数中添加警报…是的,代码将为每个链接运行一次。然后,它需要双击才能运行。@Jon我想James的建议是,只需单击一次链接,您的代码实际上可能会执行两次。结果进入了一种奇怪的状态,行为会得到意外的结果,因为每次单击都会多次执行代码。你能在jsbin.com上提供一个你的问题的例子吗?我正在尝试在jsbin上创建一个示例,它不会重现这个问题。我建议尝试缩小你的代码和在jsbin中工作的代码之间的差异-很明显,一些不同的东西让我想起了以前的问题。还有其他建议吗?这可以阻止页面跳转到顶部,但也可以阻止事件每次触发。我想我对您试图实现的目标感到困惑-链接是否导航到新页面?如果您只是使用链接触发页面上的事件,则必须返回false或使用javascript:void(0)或#作为href。如果不返回false,它将导航到href的url。同样的问题:-(.还有其他建议吗?我有一个具有选项卡式界面的表单。在右侧,我列出了表单的所有错误,每个错误都可以单击。当用户单击错误时,它将更改为正确的选项卡,并应将焦点放在与错误相关联的文本输入上。您知道实现我试图删除的内容的其他方法吗o?可能问题出在其他地方,正确的防止链接跳转形式是或使用return false;或preventDefault;您可以添加一些其他代码吗?不要在focus()上输入我的最后一条注释;我的错误;改为选中changeTab(link.attr(“href”));可能是导致错误的选项卡!请尝试!仍然无法工作,我在上面的代码中添加了changeTab函数。感谢您的帮助!
    <div id="website-messages">
    <ul>
    <li><a href="javascript:;" >my link</a></li>
    </ul>
    </div>
    
    $("div#website-messages ul li a").live("click", function(e) {
        //this make it fire every time!
        e.preventDefault();
        var link = $(this);
        changeTab(link.attr("href"));
        $(link.attr("title")).focus();
    });
    
    <li><a id='" + errors[i].elementID + "' href='javascript:;' title='" + errors[i].tabid + "'>" + errors[i].message + "</a></li>