【问题标题】:Jquery accordion customize click eventJquery手风琴自定义点击事件
【发布时间】:2013-10-09 10:56:13
【问题描述】:

我将Jquery accordion 用于手风琴。问题是,当用户单击加号或减号图标时,我想显示和隐藏内容面板,但它在标题单击时完全打开,而且 toggles 在标题部分中的 chrome 和 safari 中不工作,并且在内容部分工作任何帮助都应该被重视。 代码-

<?php
$cs=Yii::app()->clientScript;
$cs->registerScriptFile(Yii::app()->baseUrl . '/js/jquery.min.js', CClientScript::POS_HEAD);
$cs->registerScriptFile('http://code.jquery.com/ui/1.10.3/jquery-ui.js', CClientScript::POS_HEAD);
$cs->registerScriptFile(Yii::app()->baseUrl . '/js/toggles.min.js', CClientScript::POS_HEAD);
$cs->registerCssFile('http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css');
$cs->registerCssFile(Yii::app()->baseUrl . '/css/themes/toggles-light.css');
$cs->registerCssFile(Yii::app()->baseUrl . '/css/toggles.css');

?>

css-

 <style>
.ui-accordion-header {
    background:none;
}
.ui-accordion-content {
    background:none;
}
.iconOpen {
    background:url('<?php echo Yii::app()->request->baseUrl; ?>/img/minus.png') no-repeat !important;
    background-size:46px !important;
    width:46px;
    height:44px;
}
.iconClosed {
    background:url('<?php echo Yii::app()->request->baseUrl; ?>/img/plus.png') no-repeat !important;
    background-size:46px !important;
    width:46px;
    height:44px;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
    top: 25%;
    left: 0.0em;
    margin-top: -12px;
}
.ui-accordion .ui-accordion-icons {
    padding-left: 4.2em;
}
.ui-accordion .ui-accordion-header {
    margin-top: 0px;
    height: 26px !important;
}
</style>

js-

<script>
$(function() {
 var icons = {
         header: "iconClosed",    // custom icon class
         activeHeader: "iconOpen" // custom icon class
     };
$( "#main_accordion" ).accordion({
icons: icons,
collapsible: true,
heightStyle: "content"
});
$('.toggle').toggles({clicker:$('.clickme')});

});
</script>

HTML:-

<div id="main_accordion">
    <h3>R
      <div align="right" style=" margin-top: -16px;">
        <div class="toggle-light">
          <div class="toggle"></div>
        </div>
      </div>
    </h3>
    <div>
      <p>interface</p>
    </div>
    <h3>F
      <div align="right" style=" margin-top: -16px;">
        <div class="toggle-light">
          <div class="toggle"></div>
        </div>
      </div>
    </h3>
    <div>
      <p> Feed Back
      <div class="toggle-light">
        <div class="toggle"></div>
      </div>
      </p>
    </div>
  </div>

【问题讨论】:

  • 检查一下,也许你错过了什么。或者还有一些其他的 jquery 函数也与你的这个手风琴 jquery 冲突。如果是这样,那么使用 noConflict()
  • @wikijames 一切正常,它可以在 ie 和 Firefox 上运行,而且 firebug 也没有 js 错误。
  • 这意味着现在,没问题:)。太好了
  • @wikijames 与 chrome 和 safari 的问题,并且还限制了仅图标而不是所有标题部分的点击事件。
  • 请发布一个有效的 jsfiddle

标签: javascript jquery html css jquery-ui


【解决方案1】:

要将手风琴的打开/关闭仅限于图标,您需要使用beforeActivate 选项并检查点击的来源。如果不是来自图标则取消激活事件。

$( "#main_accordion" ).accordion({
    icons: icons,
    collapsible: true,
    heightStyle: "content",
    beforeActivate:function(event, ui ){
            var fromIcon = $(event.originalEvent.target).is('.ui-accordion-header > .ui-icon');
            return fromIcon;
        }
});

演示地址 http://jsfiddle.net/5Qfwc/


更新在 OP 添加到 jsfiddle 的链接后切换

对于滑块,您在容器 div 上有一个属性 align="right",这不是 div 元素的有效属性。

我刚刚将样式更改为float:right 并删除了边距,现在它在所有浏览器上都可以正常工作..

演示地址 http://jsfiddle.net/PKe5X/1/

【讨论】:

  • 感谢限制手风琴的打开/关闭现在只能在 chrome 上切换,而 safari 在标题部分不起作用。
  • @Prince,我们将不得不在某个地方看到它运行调试.. 否则我无法提出任何建议.. 不知道切换插件对 html 做了什么..
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多