通过单击(this)获取元素的id

时间:2016-09-28 22:42:53

标签: javascript jquery

要启动onclick事件,我有这个

 [].forEach.call(btnAddVendorDropDown, (btnAddVendorDropDown) => {
  btnAddVendorDropDown.addEventListener('click', onAddVendorDropDownClick, false);
 });

功能是

function onAddVendorDropDownClick(e) {
    e.preventDefault();

    addNewClass(modal, 'is-active');
    addNewClass(modalAddVendorDropDown, 'is-active');

    const test = $(this).attr('id');
    console.log(test);
    return test;
}

因此,我尝试做的是当用户点击btnAddVendorDropDown时,会调用函数onAddVendorDropDownClick。我需要从元素中获取id。当我从函数内部执行元素属性console.log的{​​{1}}时,我得到了我所需要的。我遇到的问题是当我尝试从函数外部抓取它时,我不断得到id。我不明白一旦从这个函数外面调用这个函数我怎么能抓住id。

我试过这个

undefined

显示var num = onAddVendorDropDownClick(); console.log("the function return is " + num); 的内容。

2 个答案:

答案 0 :(得分:2)

this与呼叫者的范围直接相关。这意味着没有"绑定"事件处理程序的范围,this将引用您的主应用程序范围,而不是链接函数时jquery传递的范围。

您可以包装事件对象target

function onClickHandler(e) {
    $(e.target).attr('id');
}

或者您可以在点击处理程序的jquery上下文中使用$(this)

$('#my-button')。on('点击',功能(e){     $(本).attr('编号'); });

最后一个示例有效,因为它发生在JQuery闭包内,因此它保留了前一个函数的作用域。在闭包之外,this意味着其他东西。

答案 1 :(得分:0)

265859324 是JQuery上下文,你在javascript函数里面。您可以将单击按钮更改为JQuery以使用它:



$(this)

var test; 
$("button").click(function(){
    test = $(this).attr('id');
    console.log(test);
});