javascript - jQuery加载AJAX图片属性不能为 "seen"

标签 javascript jquery ajax

当用户打开页面时,我有一个简单的 AJAX 调用开始在后台加载图像:

$('.image-container').load('/images/portfolio/');

这会加载每个图像的副本,一个小的和一个大的,例如:

<img src='...' class='small-image' data-picnum='0' style='height:100px; width:100px; opacity:1;'>
<img src='...' class='big-image' data-picnum='0' style='height:400px; width:400px; opacity:0;'>

当点击小图时,我使用 jQuery 检索它的“data-picnum”属性,然后找到对应的大图并使其可见:

var picNum = $(this).data('picnum');
$('.big-image[data-picnum="'+picNum+'"]').fadeIn();

但是,当使用 AJAX 加载图像时,jQuery 无法读取“data-picnum”属性。我用以下方法测试过:

alert($(this).data('picnum');)

弹出窗口只显示“未定义”。我也尝试按照这篇文章中的描述执行 .live()、.on() 和 .delegate ... Responding to click event of element added to document after page load ...但没有一个对我有用。图片将加载成功

我怎样才能让 jQuery“看到”这些新图像的数据属性?

最佳答案

听起来您应该使用委托(delegate),但我认为您做错了。应该看起来像这样......

$(document).on('click', '.small-image[data-picnum]', function(e) {
    var picNum = $(this).data('picnum');
    $('.big-image[data-picnum="' + picNum + '"]').fadeIn();
});

您可以将上面的 document 替换为任何不会被动态插入或替换(例如通过 AJAX)的有效父容器。

关于javascript - jQuery加载AJAX图片属性不能为 "seen",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896944/

相关文章:

javascript - 在进行 AJAX 调用后,我的 jQuery 函数消失了

javascript - 在 map 上以米为单位绘制半径指定的圆

php - ajax(jquery post)目的的成功和失败标准

php - AJAX 无法正常提交表单

javascript - 尝试动态创建删除按钮并在javascript中调用删除功能

javascript - Highchart 显示单行不带逗号的结果

javascript - 应仅包含一个星号 (*) 的字符串的正则表达式

javascript - jQuery 克隆递归

javascript - Bootstrap 容器 div 内的重叠 div - CSS

javascript - 如何更改为空格