javascript - 单击后定义 'this'

标签 javascript jquery this

我有一堆 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/

相关文章:

javascript - 通过拖动子项自动增加宽度,但带有滚动条

javascript - 检查返回 true 失败

javascript - 获取被 jQuery 更改后的 HTML 元素的内容

javascript - 允许 `p.foo = o.foo` 返回对函数 `foo` 的引用的 javascript 机制/规则是什么?

javascript - React 不调用函数

javascript - AngularJS 中的页面路由扰乱了设计

javascript - 使用 Three.js 从本地机器加载 OBJ 模型?

jquery - 简单的 jquery $(this).next() 在 IE 中不起作用

javascript - 如何触发网页上 HTML 按钮的点击?

javascript - 如何强制用户必须在 iframe 中滚动 pdf