javascript - 为什么在这种情况下触发和点击不起作用?

标签 javascript jquery

我有一段代码可以做到:

$('td.unique').live('click', function () {  
//function logic here  
}); 

这在我点击表格的 td 时效果很好。一切都好!
现在我希望能够在某些情况下以编程方式拥有相同的功能,而无需用户实际按下单击。
我已经尝试过:

$(document).ready(function() {                                                                                                                                              

    $(".clearButton").click( function () {                                                                                                                                
        var username = $(this).closest('tr').find('input[type="hidden"][name="uname"]').val();                                                                                     
        var user_id = $(this).closest('tr').find('label').val();                                                                                                             

        var input = [];                                                                                                                                                    
        input[0] = {action:'reset', id:user_id,user:username,};                                                                                                                 
        $.ajax({                                                                                                                                                            
            url: 'updateprofile.html',                                                                                                                               
            data:{'user_options':JSON.stringify(input)},                                                                                                                     
            type: 'POST',    
            dataType: 'json',                                                                                                                                               
            success: function (res) {                                                                                                                                        
                if (res.status >= 1) {                                                                                                                                       
                    //all ok                                                                                                                                                
                    console.log("ALL OK");                                                                                                                               
                     $(this).closest('tr').find('.unique').trigger('click');  
          $(this).closest('tr').find('td.unique').trigger('click');  
          $(this).closest('tr').find('td.unique').click();  


                }                                                                                                                                                           
                else {                                                                                                                                                      
                    alert('failed');                                                                                                                                        
                }                                                                                                                                                           
            }                                                                                                                                                               
        });

此按钮与 td.unique 位于同一行

这些都不起作用。为什么?我做错了吗?我这样点击的时候,是不是live绑定(bind)的功能没有被考虑到?

最佳答案

您需要在ajax函数中缓存$(this)。

var $this = $(this);

ajax函数中的$(this)不会引用被点击的元素

$(".clearButton").click(function () {
    var $this = $(this);
    var username = $this.closest('tr').find('input[type="hidden"][name="uname"]').val();
    var user_id = $this.closest('tr').find('label').val();
    var input = [];

    input[0] = {
       action: 'reset',
       id: user_id,
       user: username,
    };

    $.ajax({
        url: 'updateprofile.html',
        data: {
            'user_options': JSON.stringify(input)
        },
        type: 'POST',
        dataType: 'json',
        success: function (res) {
            if (res.status >= 1) {
                console.log("ALL OK");
                $this.closest('tr').find('.unique').trigger('click');
                $this.closest('tr').find('td.unique').trigger('click');
                $this.closest('tr').find('td.unique').click();
            } else {
                alert('failed');
            }
        }
    });
});

关于javascript - 为什么在这种情况下触发和点击不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071691/

相关文章:

JQuery Datepicker - 无默认日期

javascript - JQuery 从字符串中的标签中提取值

jquery - 在 Linux 主机上启用压缩

javascript - Jquery 向上滑动问题

jQuery 的 $.ajax URL 编码问题

javascript - 在 JavaScript 中循环遍历一个巨大的数组

javascript - 使用 nodejs 的 Forever 将 console.logs 输出到屏幕

javascript - 制作一个带有反应的验证系统

javascript - Node.js HTTP 服务器 - 加载时间较长并且不发送数据

javascript - JQuery 输入类型复选框 prop ("checked", false/true) 执行相反的操作