jquery - 为什么这个 jquery 选择器不能识别这些图像

标签 jquery html css css-selectors

我有一个 xml 函数,用于加载数据并附加到 div。 div.thumb img 的 css 和 jQuery没有选择图像。

JavaScript:

$(document).ready(function () {
    function loadfail() {  alert("Error: Failed to read file!");  }    

    //Load xml data
    function parse(document) {
        $("#thumbs").append('<div class="thumb">');

        $(document).find("entry").each(function () {
            var image = $(this).find('image').text();          

            $("#thumbs").append('<img src="Styles/images/' + image + '" width="64" height="64" />');           

        });

        $("#thumbs").append('</div>');

        $('div.thumb img').click(function () {
            $('#expandedimage').slideToggle(1000);
        });
    }

    $.ajax({
        url: 'appdata/data.xml',    // name of file with our data  
        dataType: 'xml',       // type of file we will be reading  
        success: parse,        // name of function to call when done reading file 
        error: loadfail        // name of function to call when failed to read 
    });
});

CSS:

div.thumb { float:left ; padding: 1px; }
div.thumb img { border: 2px solid white; }

HTML 标记:

<div id="body">
    <div id="expandedimage">
        Toggled Image
    </div>
    <hr />
    <div id="thumbholder">                
        <div id="thumbs">
            <!-- image(s) here! -->
        </div>
        <hr />
    </div>        
</div>  

当每张图片放置一个 div 而不是将所有图片放在一个 div 中时,该代码有效:

$("#thumbs").append('<div class="thumb"><img src="Styles/images/' + image + '" width="64" height="64" /></div>');

然而,第二个<br />不显示图像。

我的问题是,为什么当我有一个 div 和那个 div 中的图像时,div.thumb img不起作用。

最佳答案

我认为您误解了 append 函数。您应该附加有效的 xml/html。尝试一些类似的东西。

function parse(document) {

 var containerDiv = $("#thumbs").append('<div class="thumb" />');

  $(document).find("entry").each(function () {
    var image = $(this).find('image').text();          

    containerDiv.append('<img src="Styles/images/' + image + '" width="64" height="64" />');           

  });


containerDiv.find('img').click(function () {

    $('#expandedimage').slideToggle(1000);
});
}

append 函数不追加文本字符串,而是追加元素,因此您将图像作为 sibling 而不是子元素附加到 div.thumb

关于jquery - 为什么这个 jquery 选择器不能识别这些图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984966/

相关文章:

jquery - 为什么我的动画 div 沿对 Angular 线移动?

jquery 循环进度显示不正确的百分比

html - 响应式导航,无法以百分比定义宽度/高度

html - CSS 使用 :target selector 更改整个表格行的背景颜色

标题的 CSS 对齐/定位

javascript - 创建类似于 Google Plus 的菜单

javascript - 失去文本框焦点的事件 - Javascript

jquery - 仅当 div 在视口(viewport)中时如何启动 svg 动画

javascript - D3.js 将整数轴更改为字符串

html - 数据 URI 哈希参数(隐藏数据 URI 的 PDF 工具栏)