jquery - 升级到 jquery 1.10.2 后,click 事件不会触发

标签 jquery

我刚刚从 jquery 1.5.2 升级到 1.10.2。 我将所有 .live() 调用更改为 .on()。但由于某种原因,一个特定的按钮不再起作用。 逻辑如下:

$("#add_to_rule").on("click", function()   {            
        console.log('inside add');
        //only add if no validation errors.
        if  ( ($('#contact_details').val().length == 0) ) {
            $('#validation_error').html("There is no information to add");
            return false;
        }
        var emess = $("#validation_error").text();
        if ( emess.length == 0 )  { 
                add_routing_entry();            
                update_call_routing_tag();      
        }
    });

它永远不会在控制台中打印“inside add”消息。 在控制台窗口中,我进行了测试以确保该元素存在并返回正确的值。以下是我在控制台内测试的一些结果:

$('#add_to_rule').val();
"Add to Rule"
$('#add_to_rule').on("click");
<input id=​"add_to_rule" type=​"button" class=​"submit" value=​"Add to Rule">​

我还尝试从控制台窗口更改按钮上的值作为测试,如下所示:

$('#add_to_rule').val("test");
[
<input id=​"add_to_rule" type=​"button" class=​"submit" value=​"test">​
]

它确实更新了我按钮上的文本。

最后,为了它的值(value),我通过添加以下行转储了它所获取的 jquery 库的版本:

console.log(jQuery.fn.jquery);

它打印 1.10.2。

任何关于我可能做错的事情的建议将不胜感激。 谢谢。

最佳答案

将其绑定(bind)到最近的静态父元素,对动态添加的元素使用像这样的事件委托(delegate):

$(document).on("click","#add_to_rule", function()   {  

关于jquery - 升级到 jquery 1.10.2 后,click 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19363602/

相关文章:

javascript - 使用单引号将参数传递给函数

jquery - jQuery 和 Fancybox 中的视频(本地视频文件 mp4 而不是 Youtube)

javascript - 如何使用 Jquery 从 anchor 标记中获取文本

javascript - Google 地理编码 v3 - 获取格式化地址

javascript - 如何使用ajax向mysql插入动态数据和静态输入数据,动态数据不会插入

php - 在 Jquery 中,如何提醒 JSON 对象的一部分?我得到 "undefined"

jquery - 从弹出窗口内的下拉菜单中选择选项时,保持悬停触发的 Twitter Bootstrap 弹出窗口处于事件状态

javascript - 复选框选项=选择选项-AngularJS

JavaScript 错误 "Reduce of empty array with no initial value"

jquery - show() 在 Firefox 中不工作,但在 Chrome 中工作