Jquery Accordion 标题图像

标签 jquery html css accordion

我正在尝试将图像添加到 Accordion 页眉。在 mouseenter 和 mouseout 上,我能够成功更改图像。

但是当用户选择 Accordion 时,即当特定 Accordion 处于事件状态时,我能够更改图像。如果用户从一个 Accordion 移动到另一个 Accordion ,我无法替换离开 Accordion 的图像(即 oldHeader)。我尝试了不同的方法,但都是徒劳的。

我的代码的工作示例可在 JSfiddle 上找到

 $("#accordion").accordion({
     active: false,
     collapsible: true
 });

 $(function () {
     $('#accordion h3').mouseenter(function () {
         var data = $(this).text();
         if (data == 'Section 1') {
             $("#img1").remove();
             $(this).append("<span id='img1' style='margin-left: 10px'><img src='http://icons.iconarchive.com/icons/filetypeicons/filetype/128/excel-icon.png' alt='icon'></span>");
         }

         if (data == 'Section 2') {
             $("#img2").remove();
             $(this).append("<span id='img2' style='margin-left: 10px'><img src='http://icons.iconarchive.com/icons/filetypeicons/filetype/128/pdf-icon.png' alt='icon'></span>");
         }

         if (data == 'Section 3') {
             $("#img3").remove();
             $(this).append("<span id='img3' style='margin-left: 10px'><img src='http://icons.iconarchive.com/icons/graphicloads/filetype/256/csv-icon.png' alt='icon'></span>");
         }
     });
     $("#accordion h3").mouseout(function () {
         var data = $(this).text();
         //alert(data);
         if (data == 'Section 1') {
             $("#img1").remove();
             $(this).append('<span id="img1" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/iconsmind/outline/256/File-Excel-icon.png"></span>');
         }
         if (data == 'Section 2') {
             $("#img2").remove();
             $(this).append('<span id="img2" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/icons8/ios7/256/Files-Pdf-icon.png"></span>');
         }
         if (data == 'Section 3') {
             $("#img3").remove();
             $(this).append('<span id="img3" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/icons8/windows-8/256/Files-Csv-icon.png"></span>');
         }
     });

     $("#accordion h3").bind("click", function () {
         var data = $(this).text();
         //alert(data);
         var data1 = $(this).attr('class');
         var str = data1.match(/ui-accordion-header-active/ig);
         if (data == 'Section 1' && str == 'ui-accordion-header-active') {
             $(this).unbind('mouseout mouseover');
             $("#img1").remove();
             $(this).append('<span id="img1" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/filetypeicons/filetype/128/excel-icon.png"></span>');

         }
         if (data == 'Section 2' && str == 'ui-accordion-header-active') {
             $(this).unbind('mouseout mouseover');
             $("#img2").remove();
             $(this).append('<span id="img2" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/filetypeicons/filetype/128/pdf-icon.png" width="16" height="16"></span>');

         }
         if (data == 'Section 3' && str == 'ui-accordion-header-active') {
             $(this).unbind('mouseout mouseover');
             $("#img3").remove();
             $(this).append('<span id="img3" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/graphicloads/filetype/256/csv-icon.png" width="16" height="16"></span>');

         }

     });
 });
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
    background: #0000A0;
}
.ui-accordion-header-active {
    background: #ff000f;
}
img {
    width: 16px;
    height: 16px;
}
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<div id="accordion">
     <h3>Section 1<span id="img1" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/iconsmind/outline/256/File-Excel-icon.png" alt='icon'></span></h3>

    <div>
        <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio.</p>
    </div>
     <h3>Section 2<span id="img2" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/icons8/ios7/256/Files-Pdf-icon.png" alt='icon'></span></h3>

    <div>
        <p>Sed non urna. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor aliquet laoreet, mauris turpis velit, faucibus interdum tellus libero ac justo.</p>
    </div>
    
<h3>Section 3<span id="img3" style="margin-left: 10px"><img src="http://icons.iconarchive.com/icons/icons8/windows-8/256/Files-Csv-icon.png" alt='icon'></span></h3>

    <div>
        <p>Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.Phasellus pellentesque purus in massa.</p>
        <ul>
            <li>List item one</li>
            <li>List item two</li>
            <li>List item three</li>
        </ul>
    </div>
</div>

最佳答案

我更改了一些 ID 并重新设计了 mouseenter、mouseout 调用,它似乎按您的预期工作。

引用JSfiddle ,但是作为一个例子:

 $(function() {
    $('#section1').mouseenter(function () {
    $('#img1').attr("src", "http://icons.iconarchive.com/icons/filetypeicons/filetype/128/excel-icon.png");
})
    $('#section1').mouseout(function () {
    $('#img1').attr("src", "http://icons.iconarchive.com/icons/iconsmind/outline/256/File-Excel-icon.png");
})

关于Jquery Accordion 标题图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33235926/

相关文章:

python - 将 html 保存到文件中,以便以后使用 Beautiful Soup 使用

html - 固定尺寸盒子的 CSS 流体网格

jquery - 使用 jQuery 在 CSS 中设置水平滚动条样式

javascript - i118next 初始化问题

javascript - DatePicker 始终设置为第一行 ASP.NET MVC

html - 并排对齐固定大小的 block 和响应 block ?

javascript - 将对象名称和描述定义为函数调用中的变量?

javascript - 在弹出窗口中 Bootstrap 提前输入

javascript - 鼠标悬停在框架中的所有元素上仅响应点击

html - 在 100% 高度的 div (Bootstrap) 中居中 div(垂直和水平)