javascript - 如何在列表使用 slideup 和 slidedown 时使用 onclick 更改图像

标签 javascript jquery onclick slidedown slideup

我想在点击列出的 child 的 parent 时更改 img 的 src。我正在使用我在 StackOverflow 上找到的一些我一直在使用的代码,因为我在 slideup 和 slidedown 方面遇到了问题。

在每个最上面的项目(父项)旁边,左侧将是一个指向右侧的箭头图标。单击该图标后,该图像应变为向下箭头。

我可以让图片在点击时改变,但除非你点击图片,否则图片不会变回来。因此,我相信我需要将更改与 slideup 和 slide down 功能 Hook 。如果您单击关闭链接或单击新的父级,图像也应该变回。

我可以在没有“一次只能显示一个列表”功能的情况下生活,这将消除在单击新父级时图像也发生变化的需要。

对于这个 fiddle ,我只将我试图做的应用到列表的第一个父级:http://jsfiddle.net/9aa5n/51/

HTML:

    <li><a href="javascript:void(0);" class="edit_button edit_this" id="1"><img src="arrowright.png"></a></li>  
<li class="show_hide" id="1C">
<p>lkjlkjasdfasdf</p>
<a href="javascript:void(0);"  id="1Close" class="close cancel_btn">Close</a>
</li>

<li><a href="javascript:void(0);" class="edit_button edit_this" id="2">Edit</a></li>
<li class="show_hide" id="2C">
<p>lkjlkjasdfasdf</p>
<a href="javascript:void(0);"  id="2Close" class="close cancel_btn">Close</a>
</li>

<li><a href="javascript:void(0);" class="edit_button edit_this" id="3">Edit</a></li>
<li class="show_hide" id="3C">
<p>lkjlkjasdfasdf</p>
<a href="javascript:void(0);"  id="3Close" class="close cancel_btn">Close</a>
</li>

jQuery/Javascript:

    $(document).ready(function() {
        $('.show_hide').slideUp(0);
        $('.edit_this').click(function() {
            $('.show_hide').slideUp(300);
            var takeID = $(this).attr('id');
            $('#' + takeID + 'C').slideDown(300);


        });
        $('.close').click(function() {
            var takeID = $(this).attr('id').replace('Close', '');
            $('#' + takeID + 'C').slideUp(300);
        });
    });

$('#img-tag').on({
    'click': function() {
                     var src = ($(this).attr('src') === 'arrowright.png')
            ? 'arrowdown.png'
            : 'arrowright.png';
         $(this).attr('src', src);
    }
});

最佳答案

我更新了你的 jsfiddle:http://jsfiddle.net/9aa5n/53/

由于您没有提供图片的绝对路径,我从网上添加了一些。

我删除了您的点击事件,并将其替换为这个,我相信您的问题是您在 jQuery 中引用元素的方式。

$(".edit_button").click(function() {
    var img = $(this).find("img").first();
    console.log(img.attr("src"));
    if (img.attr("src") === 'http://iconizer.net/files/Brightmix/orig/monotone_arrow_right.png') {
            img.attr("src", 'http://png-3.findicons.com/files/icons/2315/default_icon/256/arrow_down.png');
            console.log(img.attr("src"));
    } else {
        img.attr("src", 'http://iconizer.net/files/Brightmix/orig/monotone_arrow_right.png');
         console.log(img.attr("src"));
    }
});

这应该可以让您开始完善 UI, 即关闭所有 .edit_button 然后只打开 $(this).find("img").first() 元素 ...

关于javascript - 如何在列表使用 slideup 和 slidedown 时使用 onclick 更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728678/

相关文章:

javascript - 如何确保 javascript/jquery 总是在返回 true(打开链接)之前完成点击功能?

javascript - 无法在codeigniter中的foreach中获取数据

javascript - .find() 多选器不能添加prop

javascript - 我需要添加一个条件语句来将 css 高度链接到下拉选择 (jQuery)

javascript - 使用 jquery validate errorPlacement 获取特定 div 中的错误消息

javascript - 在浏览器/选项卡关闭时终止 session

javascript - PhantomJS 的行为不同于 Firefox webdriver

javascript - 元素只能在特定位置选择

javascript - 从链接 href 更改 iframe 源

java - 在Table Layout中的TextViews的onClickListener中添加动态数据