-1

- 下面的锚标签是通过JS添加到页面的。

#sC-绑定事件时,容器 div就在那里。

- 使用 jQuery 1.7.2

-没有语法错误,没有控制台错误。

-是的,JS 包含在脚本标签中,内容在正文中,没有标记警告或错误。

-我唯一能想到的是:这些链接上附加了另一个事件,即使在我的代码正常工作后它也一直有效。但是,我不知道它来自哪里(devtools 和 firebug 真的没有指示它的附加位置,它指向 jQuery 库的第 1 行...)

$(document).ready(function() {
    $('#sC').on('click','a', function(event) {
            alert("POOP");
    });
});
<div id="sC">
    <a href="javascript:return false">A</a>
    <a href="javascript:return false">B</a>
    <a href="javascript:return false">C</a>
    <a href="javascript:return false">D</a>
    <a href="javascript:return false">E</a>
    <a href="javascript:return false">F</a>
</div>

更新 也试过这个:

<div id="sC">
    <a href="javascript:return false">A</a>
    <a href="javascript:return false">B</a>
    <a href="javascript:return false">C</a>
    <a href="javascript:return false">D</a>
    <a href="javascript:return false">E</a>
    <a href="javascript:return false">F</a>
</div>

这也不起作用(???):

$(document).ready(function() {
    $('#sC').on('click','.scenarios', function(event) {
        alert("POOP");
    });
});
<div id="sC">
    <span class="scenarios">A</span>
    <span class="scenarios">B</span>
    <span class="scenarios">C</span>
    <span class="scenarios">D</span>
    <span class="scenarios">E</span>
    <span class="scenarios">F</span>
</div>

之后,我尝试在控制台中抛出我的 .on() 函数以查看它是否可以工作(它应该,对吗?不。F ***你的 chrome 控制台)......在控制台中尝试了这个并喘不过气来

$('#sC .scenarios').click(function(event) {
    alert('f*** this s***');
});
4

2 回答 2

3

问题是您false从内联处理程序返回,防止它冒泡到#sC处理程序。

尝试javascript:void(0)改用:

<div id="sC">
    <a href="javascript:void(0)">A</a>
    <a href="javascript:void(0)">B</a>
    <a href="javascript:void(0)">C</a>
    <a href="javascript:void(0)">D</a>
    <a href="javascript:void(0)">E</a>
    <a href="javascript:void(0)">F</a>
</div>
于 2013-09-10T22:11:48.760 回答
0

您是否尝试过使用click不带 on 的处理程序?那样有用吗?(用于调试目的)。

此外,我倾向于始终将我的on处理程序绑定到文档本身——因为它总是在页面加载时存在,但是如果#sC在页面加载时存在,你应该没有问题,因为你onready函数中绑定了。

看看下面的代码是否适合你:

$(document).ready(function() {
    $(document).on('click','#sC a', function(e) {
            e.preventDefault();//this will stop the page navigating away
            alert("POOP");
            //if after you do something then want to continue navigating the page
            //from the anchors `href`
            window.location = $(this).attr('href');
            return false;//I always tend to return false
    });
});
于 2013-09-10T23:06:27.953 回答