Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 jQuery获取已单击元素的父jQuery对象_Javascript_Jquery - Fatal编程技术网

Javascript jQuery获取已单击元素的父jQuery对象

Javascript jQuery获取已单击元素的父jQuery对象,javascript,jquery,Javascript,Jquery,My HTML包含许多类似以下内容的对象: <div class="class"> <div class="disconnect_btn">Click here</div> <input type="hidden" name="ID" value="12"/> </div> 我想做的是首先获取按钮所在的Div,我尝试使用e.parents('.class')方法,但这总是返回错误,就像对象没有方法一样。。。 我的第二个目标是从

My HTML包含许多类似以下内容的对象:

<div class="class">
  <div class="disconnect_btn">Click here</div>
  <input type="hidden" name="ID" value="12"/>
</div>
我想做的是首先获取按钮所在的Div,我尝试使用
e.parents('.class')
方法,但这总是返回错误,就像对象没有方法一样。。。 我的第二个目标是从parents Div中的隐藏输入字段中提取value属性

function disconnectFunction(e){
    var parent = e.parents('.class'));  //returns error
    var ID = parent.find('input:hidden[name=ID]').attr('value');
    console.log( ID );
}

我也尝试了这个和$(这个)选择器,但不知怎么的,我现在被卡住了,也许有一个简单的解决方案我找不到。

你需要传递当前对象而不是事件对象。请使用on('events')方法将事件附加到dom元素

可能性

  • 可以传递当前对象
  • 您可以通过Event.Target属性访问事件对象中的当前对象
  • 您可以在函数中访问此对象

    $('.disconnect_btn').on('click',function(e){
       disconnectFunction(this);
    });
    
     function disconnectFunction(currObj){
       var parent = $(currObj).parents('.class'));  
       var ID = parent.find('input:hidden[name=ID]').attr('value');
        console.log( ID );
    }
    
  • 或者,您也可以在函数中访问此对象

    function disconnectFunction(e){
            var parent = $(this).parents('.class'));  //here this refer to clicked object
             var parent = $(e.Target).parents('.class'));  //Using event.Target Property
            var ID = parent.find('input:hidden[name=ID]').attr('value');
            console.log( ID );
        }
    

    您需要传递当前对象而不是事件对象。请使用on('events')方法将事件附加到dom元素

    可能性

  • 可以传递当前对象
  • 您可以通过Event.Target属性访问事件对象中的当前对象
  • 您可以在函数中访问此对象

    $('.disconnect_btn').on('click',function(e){
       disconnectFunction(this);
    });
    
     function disconnectFunction(currObj){
       var parent = $(currObj).parents('.class'));  
       var ID = parent.find('input:hidden[name=ID]').attr('value');
        console.log( ID );
    }
    
  • 或者,您也可以在函数中访问此对象

    function disconnectFunction(e){
            var parent = $(this).parents('.class'));  //here this refer to clicked object
             var parent = $(e.Target).parents('.class'));  //Using event.Target Property
            var ID = parent.find('input:hidden[name=ID]').attr('value');
            console.log( ID );
        }
    

    您的问题是您试图使用
    事件
    对象,而不是HTML对象

    $('.disconnect_btn').bind('click',function(e){
        // `e` refers to event object received by the callback function
        // `this` refers to the HTMLElement that was clicked
        // $(this) turns `this` (which is HTMLElement object) to `jQuery` object
        disconnectFunction($(this)); // this will do the trick
        // now, you can use `e` parameter inside disconnectFunction
        // as a `jQuery` object which has `parents` method defined
    });
    

    您的问题是您试图使用
    事件
    对象,而不是HTML对象

    $('.disconnect_btn').bind('click',function(e){
        // `e` refers to event object received by the callback function
        // `this` refers to the HTMLElement that was clicked
        // $(this) turns `this` (which is HTMLElement object) to `jQuery` object
        disconnectFunction($(this)); // this will do the trick
        // now, you can use `e` parameter inside disconnectFunction
        // as a `jQuery` object which has `parents` method defined
    });
    
    你这样使用:

    var parent = e.parents('.class'));  //returns error
    
    var parent = $(e).parents('.class');  
    
    这样使用:

    var parent = e.parents('.class'));  //returns error
    
    var parent = $(e).parents('.class');  
    
    你这样使用:

    var parent = e.parents('.class'));  //returns error
    
    var parent = $(e).parents('.class');  
    
    这样使用:

    var parent = e.parents('.class'));  //returns error
    
    var parent = $(e).parents('.class');  
    

    使用
    e.target
    获取单击的元素,
    e
    是事件对象。您还可以使用
    .closest()
    获取class
    class
    的第一个父级

    另一个注意事项:用于获取输入字段的值,而不是使用

    另一种解决方案是将单击的元素传递给
    disconnectFunction

    function disconnectFunction(el){
        var parent = $(el).closest('.class'));  //returns error
        var ID = parent.find('input:hidden[name=ID]').val();
        console.log( ID );
    }
    
    然后


    使用
    e.target
    获取单击的元素,
    e
    是事件对象。您还可以使用
    .closest()
    获取class
    class
    的第一个父级

    另一个注意事项:用于获取输入字段的值,而不是使用

    另一种解决方案是将单击的元素传递给
    disconnectFunction

    function disconnectFunction(el){
        var parent = $(el).closest('.class'));  //returns error
        var ID = parent.find('input:hidden[name=ID]').val();
        console.log( ID );
    }
    
    然后


    您可以将事件作为参数传递,而不是传递DOM

    您可以通过如下操作从事件传递它

    $('.disconnect_btn').on('click',function(e){
        disconnectFunction(e.target);
    });
    
    在disconnectFunction中,您可以按如下方式使用它

    function disconnectFunction(e){
        var parent = $(e).parents('.class'));  //returns error
                 ---^^^^^-----
        var ID = parent.find('input:hidden[name=ID]').attr('value');
        console.log( ID );
    }
    

    您可以将事件作为参数传递,而不是传递DOM

    您可以通过如下操作从事件传递它

    $('.disconnect_btn').on('click',function(e){
        disconnectFunction(e.target);
    });
    
    在disconnectFunction中,您可以按如下方式使用它

    function disconnectFunction(e){
        var parent = $(e).parents('.class'));  //returns error
                 ---^^^^^-----
        var ID = parent.find('input:hidden[name=ID]').attr('value');
        console.log( ID );
    }
    
    试试这个

    $('.disconnect_btn').bind('click',function(e){
        disconnectFunction($(this));
    });
    

    试试这个

    $('.disconnect_btn').bind('click',function(e){
        disconnectFunction($(this));
    });
    


    您只需执行以下操作:

    $('.disconnect_btn').on('click',function(e){
        disconnectFunction($(e.target));  // <== Pass $(e.target) or $(this), in place of e
    });
    
    $('.disconnect_btn')。打开('click',函数(e){
    
    disconnectFunction($(e.target));//您只需执行以下操作:

    $('.disconnect_btn').on('click',function(e){
        disconnectFunction($(e.target));  // <== Pass $(e.target) or $(this), in place of e
    });
    
    $('.disconnect_btn')。打开('click',函数(e){
    disconnectFunction($(e.target));//使用$(e.target)。最近('.class')使用$(e.target)。最近('.class'))