gpt4 book ai didi

javascript - 单击后定义 'this'

转载 作者:行者123 更新时间:2023-11-30 07:43:07 25 4
gpt4 key购买 nike

我有一堆 ajax 函数,我正在触发事件(点击、dblclick、按键等)在我的 events.js 文件的开头,我想定义一个变量,它代表用户点击的元素的 ID。目前是

$(this).parents('li').attr('data-id')

到目前为止,我尝试过这种方式:

var element_id = $(this).parents('li').attr('data-id');

var test = function(id)
{
ajaxCall(id);
}

$('.js_btn_test').live('click', function()
{
test(element_id);
}

不幸的是,它不起作用。我认为当我单击 .js_btn_test 时会解析 element_id var 并将其评估为其父“li”,然后获取数据 ID。

感谢您的帮助!

EDIT1:基本的 HTML 结构

看起来像这样

<li data-id="<?php echo $item->getId(); ?>">
<button class="js_btn_test">Test</button>
</li>

最佳答案

不,它不是那样工作的。与...

var element_id = $(this).parents('li').attr('data-id');

...您为 element_id 变量立即分配一个值,而不取决于您接下来检查它的值时 this 是什么时间。

一种可能的解决方法是改用函数:

var getElementId = function(el) {
return $(el).parents('li').attr('data-id');
};
...
$('.js_btn_test').live('click', function() {
test(getElementId(this));
});

... 作为事件处理程序中的 this(您传递给 live 的匿名函数)引用触发事件的元素。

作为旁注,您可以将 .attr('data-id') 换成 .data('id') 调用,如图所示 here并描述了here .

关于javascript - 单击后定义 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com