如何在jQuery Sortable手风琴头上实现一个按钮
我一直在为我的网站制作一个jQuery自定义可排序手风琴。 下一个要实现的阶段是可排序手风琴的每个标题上的按钮,它将从jQuery可排序手风琴中删除部分可扩展列表。
我已准备好使用代码了,但是我似乎无法覆盖标题上的按钮而不是它在点击function上的标题的一部分来扩展或拖动函数进行排序,但是我确实希望它在按顺序排列时遵循手风琴。
function create_accordian(str) { $( str ) .accordion({ header: '> div > h3', autoHeight: false, active: false, collapsible: true, }) .sortable({ axis: 'y', handle: 'h3', stop: function( event, ui ) { // IE doesn't register the blur when sorting // so trigger focusout handlers to remove .ui-state-focus ui.item.children( 'h3' ).triggerHandler( 'focusout' ); } }); }
小提琴
我已经尝试修改CSS以获取删除function的位置,上面的jQuery代码用于定义头部,将div
包装在div
并单独定义头部。 我所有的努力都走到了尽头。
我需要能够在每个标题上都有一个删除图标,它在排序时移动并具有单独的单击function,因此它不会展开或拖动手风琴。
最诚挚的问候,蒂姆
您需要两组更新才能达到预期目标。 注意我在添加了一个
.RemoveSection
类,带有’X’图标以方便这些示例。
首先,为您拥有的’X’图标创建一个.click()
处理程序,并在第一步中使用.stopPropagation()
( 此处引用 )以确保其click事件不会冒泡到jQ UI可排序:
$('.RemoveSection').click(function(event){ event.stopPropagation(); });
接下来,利用jQ UI可排序窗口小部件的cancel
选项( 此处引用 )将“X”图标排除在排序句柄之外:
.sortable({ axis: 'y', handle: 'h3', cancel: '.RemoveSection', // This excludes your 'X' icon stop: function( event, ui ) { // IE doesn't register the blur when sorting // so trigger focusout handlers to remove .ui-state-focus ui.item.children( 'h3' ).triggerHandler( 'focusout' ); } });
更新了jsFiddle,分享自你的: http : //jsfiddle.net/2aLec/2/
虽然我实际上没有添加脚本来删除可排序部分,但如果您需要帮助,请给它一个回去和回发。 您的一般方法应该是简单地将DOM从“X”图标遍历到父标题,然后删除它及其兄弟
(并且可以启动可排序的.refresh()
以获得良好的衡量标准)。