javascript - 获取动态创建的元素,点击javascript

标签 javascript jquery

我正在尝试通过 javascript/jquery 跟踪用户点击了哪些按钮。我有以下代码

$(document).on('click', '[data-tracker]', function( event ) {

    var target = event.target;
    var targetName = $(target).data('tracker');

    console.log(targetName);
});
<button data-tracker="test1">test1</button>
<i data-tracker="test2">test2</i>
<img data-tracker="test3">

目前这一切如我所愿。当有人点击页面上具有 data-tracker 属性的元素时,我会在控制台中记录该值。

我在一些页面上使用数据表,这些页面从服务器返回的 json 动态创建元素。我不知道如何记录动态创建的元素。

所以总而言之,我想要 1 个函数来检查用户是否单击具有 data-tracker 属性的元素并将其值输出到控制台。

最佳答案

首先而不是这样的

$(document).on('click', '[data-tracker]', function( event ) {
    var target = event.target;
    var targetName = $(target).data('tracker');
    console.log(targetName);
});

你可以这样做

$(document).on('click', '[data-tracker]', function() {
    var targetName = $(this).data('tracker');
    console.log(targetName);
});

其次,这种行为的原因可能是因为.data()函数就是这样工作的

Store arbitrary data associated with the specified element. Returns the value that was set.

因此,当您动态添加具有属性 data-tracker 的元素时,没有设置值,因为它没有被存储。所以不要使用 .data()只需使用 .attr() .

$(document).on('click', '[data-tracker]', function() {
    var targetName = $(this).attr('data-tracker');
    console.log(targetName);
});

这是一个片段

$(document).on('click', '[data-tracker]', function() {
  console.log($(this).attr('data-tracker'));
});

var num = 0;

$("#addElement").on('click', function() {
  $("<div>").attr('data-tracker', 'test value ' + num).html('Test value' + num).appendTo(".content");
  num++;
});
[data-tracker] {
  cursor: pointer;
  color: #F00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="addElement">Add element</button>

<div class="content">
  <div data-tracker="value1">Value 1</div>
  <div data-tracker="value2">Value 2</div>
  <div>Test</div>
  <div data-tracker="value3">Value 3</div>
  <div data-tracker="value4">Value 4</div>
</div>

关于javascript - 获取动态创建的元素,点击javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50831482/

相关文章:

Javascript 添加了多个 Bootstrap Select div 不工作

javascript - 如何在成功函数上删除ajax中的一条记录后重新加载表内容

javascript - 如何使用 jQuery 和 CSS margin 自动调整边距以自动居中垂直和水平

javascript - 第二个下拉菜单运行不佳。

javascript - jQuery - 如何使用 onClick 事件更改图像和文本?

javascript - (jQuery) 将元素选择到 TD 中并过滤仅包含数字的值

javascript - 在文档的不同页面之间传递数据

javascript - 你如何配置nowjs?

javascript - data 属性中的 JSON 对象

javascript - 如何为我的评论制作滚动内容?