要启动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);
的内容。
答案 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);
});