【问题标题】:Delegated click event doesn't fire委托的点击事件不会触发
【发布时间】:2014-11-11 20:44:54
【问题描述】:

我正在开发一个网络应用程序。您可以找到网站here

如果单击“道路”图标,并且在菜单打开加号(“+”)后,将出现一个带有标签的文本输入。这个<ul> 使用jQueryUI Sortable 插件,当然可以在输入后对地址进行排序。

我想在这些地址字段的标签上添加一个点击事件,这样当用户点击号码时,会出现一个对话框,他/她可以手动编辑号码(它可以得到一点反击——如果有数百个地址,则很有效率)。

由于稍后创建标签和输入的<li> 元素,我尝试委托点击事件,如下所示:

$(document.body).on('click', '.control-label', function () {
    console.log($(this));
});

但是该事件永远不会触发。我开始认为,也许可排序插件禁用了我的事件到该标签?

这是地址字段的HTML代码(标签+输入+删除按钮)

<li>
    <div class="form-group">
        <label class="col-md-1 control-label">1.</label>
        <div class="col-md-11 input-group">
            <input type="text" name="waypoints[]" class="form-control form-control-square waypoint animated fadeInRight" placeholder="Megálló" autocomplete="off" required=""><span class="input-group-btn animated fadeInRight"><button type="button" class="btn btn-square btn-danger btn-removewaypoint animated fadeInRight">×</button></span>
            <div class="search-suggestions">
                <ul></ul>
            </div>
        </div>
    </div>
</li>

Here 是添加新行的 addWaypoint() 函数。每次用户单击 + 按钮时都会调用它。

编辑:显然它不是可排序的插件,而是阻止点击事件的其他东西。有人有什么想法吗?

【问题讨论】:

  • 我刚刚在 jsfiddle 中测试了它,它可以工作。必须是其他禁用点击事件的东西
  • @RiceJunkie 我知道 Chrome 的开发者控制台中有一种方法可以查看元素附加了哪些事件,但我不知道如何检查。你有什么想法吗?
  • 您可以在开发人员工具中选择您的元素,在右侧列出您的 css 样式的地方有一个事件监听器选项卡
  • @TrisztánThar 我已经检查过了——你可以看到 jQuery 在各个点都附加了自己。这是有道理的——你没有将你的代码直接附加到click,只是让jQuery在事件发生时调用你的函数。我目前正在尝试重现 jsfiddle 上的实际问题...

标签: javascript jquery html jquery-ui events


【解决方案1】:

您需要设置一个与每个控件标签类相关的变量,以便对其进行控制台记录(或提醒它,或随心所欲地使用它)。

这就是我建议你修改 javascript 的方式:

$(document.body).on('click', '.conrtol-label', function () {
    var spanText=$(this).text();
    console.log($(this));
    alert(spanText);
});

也许这个小提琴会有所帮助:http://jsfiddle.net/jo6957au/1/

修改为使用li的http://jsfiddle.net/jo6957au/3/

【讨论】:

  • OP 说事件一开始就没有触发 - 这将如何帮助触发事件?
猜你喜欢
  • 1970-01-01
  • 2013-08-01
  • 2023-03-03
  • 2020-12-27
  • 2013-05-19
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多