【问题标题】:Prevent an element within header from expanding防止标题中的元素扩展
【发布时间】:2011-08-23 08:36:33
【问题描述】:

我正在使用 jQueryUI Accordion,并动态生成元素。如果我们单击标题内的删除操作链接,我需要防止手风琴展开。

要在使用 .live() 进行一次绑定后阻止进一步的处理程序执行,处理程序必须返回 false。调用 .stopPropagation() 不会完成此操作。

return false 运气不好。请查看demo

【问题讨论】:

  • 如何在手风琴中添加新元素?
  • @William Niu 通过 append()、销毁和召回手风琴()。
  • 如果我们看到您的代码和标记,诊断代码问题总是更容易。 HTML、CSS 和 JS。
  • @Bernhard Hofmann 请点击演示链接,它在 jsfiddle 上。

标签: jquery-ui accordion


【解决方案1】:

我认为使用live() 实现你想要的东西不会有太多运气,因为jQuery 只支持event bubbling and not event capturing。设计决策可能是因为 IE 不支持事件捕获,尽管 W3C 的规范对两者都有灵活性。

最好的办法是在删除按钮插入 DOM 之后立即将点击​​事件附加到删除按钮(以停止事件传播),然后再重新启动手风琴。您可能需要注意不要多次将点击事件绑定到现有的删除按钮。

伪代码如下所示:

  1. 在当前手风琴上调用.accordion('destory')
  2. 创建新元素,即<h2>...<a class="revmoe">...</a></h2><div>...</div>
  3. 将新元素插入现有手风琴
  4. 将点击事件绑定到新元素中的移除按钮以停止事件传播
  5. 启动手风琴,即.accordion({..})

关于 jQuery 事件捕获的帖子:

【讨论】:

    【解决方案2】:

    只需使用插件给定的功能:

    $('#accordion').accordion({active:8, disabled:true});
    
    jQuery('.remove').click(function(){
    $('#accordion').accordion('disable');
    
    })
    

    我选择了“active:8”选项,因为这样一开始就不会打开任何标题(索引 -1 不适用于 IE)。检查功能和选项:http://docs.jquery.com/UI/Accordion

    希望这就是你要找的:-)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多