【问题标题】:How to make only specific text clickable on accordion header - jquery?如何在手风琴标题上仅单击特定文本 - jquery?
【发布时间】:2009-11-10 14:09:45
【问题描述】:

我在手风琴标题中添加了删除和编辑链接,但是这些链接不起作用,因为每次我点击它们时手风琴就会打开。以及我该怎么做的建议?请注意,我正在做嵌套手风琴。 这就是我在 js 上定义它的方式:

$("#acc2").accordion({  alwaysOpen: false,active: false,autoheight: false,
            header: 'h3.ui-accordion2-header',clearStyle: true,
             event: 'click' });

在 html 上我有这样的:

<div class="ui-accordion2-group">
  <h3 class="ui-accordion2-header">
  <table border=0 width=100% class= 'DarkGray12'  >
    <tr>
      <td>
      <a href="javascript:toggel_new_activity('1');">Section Title</a>
      </td>
      <td align='right'>
        <table border=0>
          <tr>
            <td>
              <a href="javascript:toggel_new_activity('1');">New Activity</a>
            </td>
            <td>
              <a href='#'>Edit</a>
            </td>
            <td>
              <a href='#'>Delete</a>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
  </h3>
</div>

【问题讨论】:

    标签: jquery header accordion


    【解决方案1】:

    首先,摆脱 h3 中的那些表。将 div 与 css 一起使用:

    <style>
    .ui-accordion2-header .tools{
        position: absolute;
        right: 10px;
        top: 10px;
        width: 345px;
    }
    .ui-accordion2-header .tools a {
        width: auto;
        display: inline;
    }
    </style>
    <div id="accordion" class="ui-accordion2-group">
        <h3 class="ui-accordion2-header" data-sectionid="1">
            <a href="#">Section Title</a>
            <div class="tools">
                <a href="#" class="newactivity">New Activity</a>
                <a href="#" class="edit">Edit</a>
                <a href="#" class="delete">Delete</a>
            </div>
        </h3>
        <div>
            <p>Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam.</p>
        </div>    
    </div>
    

    其次,不需要在顶部添加事件内联:

    <script type="text/javascript">
    $(function() {
    $("#accordion").accordion({
        alwaysOpen: false,
        active: false,
        autoheight: false,
        clearStyle: true
    }).find('.tools a').click(function(ev){
        ev.preventDefault();
        ev.stopPropagation();
        var $obj = $(this);
        var sectionid = $obj.closest('h3').attr('data-sectionid');
        if ($obj.hasClass('newactivity')){
            toggel_new_activity(sectionid);
        } else if ($obj.hasClass('edit')){
            edit(sectionid);
        } else if ($obj.hasClass('delete')){
            delete(sectionid);
        }
    });
    });
    </script>
    

    ev.preventDefault() 防止发生单击“a”标签时发生的正常事情。 ev.stopPropaggation() 防止点击事件到达相应和切换部分的状态

    剩下的只是找出当前部分的 id 并根据点击的链接进行正确的函数调用。

    【讨论】:

    • 我试过了,它奏效了。现在,如果我想让“New Section”打开手风琴以防它被关闭,我该怎么办? IE如何检查手风琴是打开还是关闭?
    • 我想我找到了方法:我添加了这一行:$("div.ui-accordion2-content").show();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2015-06-25
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多