javascript - 将事件附加到动态创建的 dom 元素

标签 javascript jquery event-handling jquery-events

在下面的代码中,我动态创建不同的帖子。 每个帖子都有自己的图片。

$(function () {
    for(post in data){
        //get from the data post details

        var titleData = data[post]["title"];
        var descriptionData = data[post]["description"];
        var imageData = "images/"+data[post]["image"];
        //create elements with jquery
        var postHolder = $('<div class="post row"></div>');
        var img = $('<img src="'+imageData+'" data-title="'+titleData+'" class="col-sm-3 img-post">');
        var textHolder = $('<div class="col-sm-9"></div>');
        var title = $('<h4 class="title-post"></h4>').append(titleData);
        var description = $('<p class="explanation-post"></p>').append(descriptionData);

        
        textHolder.append(title);
        textHolder.append(description);

        postHolder.append(img);
        postHolder.append(textHolder);
        $('.posts-container').append(postHolder);


        img.on('click',function(){alert(this.data-title);});

    }


});

我希望当我单击图像时,它会提醒帖子的标题(称为“titleData”),并且“textHolder”会将其背景颜色更改为灰色。

此挑战的限制是:

  1. 每次传递不同的参数作为“titleData”。
  2. 使用最小的内存空间。

最佳答案

data-title 是 JavaScript 中的无效标识符。要访问 data-* 属性,您可以使用 HTMLElement.dataset

 alert(this.dataset.title)

或者,当您使用 jQuery .data() 方法时。

alert($(this).data("title"));

关于javascript - 将事件附加到动态创建的 dom 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500029/

相关文章:

javascript - ArrayController.addObjects 之后的 Emberjs Hook 称为 EmberJs 1.0.0

javascript - 字体仅在之前在页面中使用过后才会出现在 Canvas 上

jquery - 如何将元素添加为文章元素的最后一个子元素

javascript - 我们如何使用 `mouseover` 和 `mouseout` 事件?

javascript - 处理不同对象上的 "mousedown"事件

javascript - 除了 if/else 语句之外,是否有 "Vue way"来检查空字符串变量?

jquery - 防止Bootstrap崩溃崩溃

objective-c - Cocoa:拖动时不会触发任何键盘事件(NSEventTrackingRunLoopMode)

C# lambda 表达式,作用域变量值

javascript - 在模态窗口上创建 cookie