Jquery ui jQuery UI Accordion-启用可排序时,内容将绘制在标题内
我的asp.NETMVC4视图中有一个jquery用户界面。我遵循了这里的解释: 下面是我的怪异行为(见下面链接中的图片) 正如您所看到的,我有两个标题,Filter和addcomponent。奇怪的行为是,例如在case Filter中,内容被绘制在标题“Filter”中,为什么?“添加组件”标题也是如此 HTML代码(以下在jQuery ui选项卡中):Jquery ui jQuery UI Accordion-启用可排序时,内容将绘制在标题内,jquery-ui,jquery-ui-accordion,Jquery Ui,Jquery Ui Accordion,我的asp.NETMVC4视图中有一个jquery用户界面。我遵循了这里的解释: 下面是我的怪异行为(见下面链接中的图片) 正如您所看到的,我有两个标题,Filter和addcomponent。奇怪的行为是,例如在case Filter中,内容被绘制在标题“Filter”中,为什么?“添加组件”标题也是如此 HTML代码(以下在jQuery ui选项卡中): /*IE在排序时存在布局问题(请参见#5413)*/ .group{zoom:1} (...) 过滤器 添加组件 过滤器 添加其他
/*IE在排序时存在布局问题(请参见#5413)*/
.group{zoom:1}
(...)
过滤器
添加组件
过滤器
添加其他
在我的脚本部分,我有以下内容:
$(function () {
function subscribe_accordion_to_hoverintent_event(accordionId) {
$(accordionId).accordion({
event: "click hoverintent"
});
}
subscribe_accordion_to_hoverintent_event("#accordion1");
subscribe_accordion_to_hoverintent_event("#accordion2");
});
// Collapse content
$(function () {
function set_accordion_as_collapsible(accordionId) {
$(accordionId).accordion({
collapsible: true
});
}
set_accordion_as_collapsible("#accordion1");
set_accordion_as_collapsible("#accordion2");
});
// Sortable functionality
$(function () {
function set_accordion_as_sortable(accordionId) {
$(accordionId).accordion({
header: "> div > h3"
}).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");
}
});
}
set_accordion_as_sortable("#accordion1");
set_accordion_as_sortable("#accordion2");
});
/*
* hoverIntent | Copyright 2011 Brian Cherne
* http://cherne.net/brian/resources/jquery.hoverIntent.html
* modified by the jQuery UI team
*/
$.event.special.hoverintent = {
setup: function () {
$(this).bind("mouseover", jQuery.event.special.hoverintent.handler);
},
teardown: function () {
$(this).unbind("mouseover", jQuery.event.special.hoverintent.handler);
},
handler: function (event) {
var currentX, currentY, timeout,
args = arguments,
target = $(event.target),
previousX = event.pageX,
previousY = event.pageY;
function track(event) {
currentX = event.pageX;
currentY = event.pageY;
};
function clear() {
target
.unbind("mousemove", track)
.unbind("mouseout", clear);
clearTimeout(timeout);
}
function handler() {
var prop,
orig = event;
if ((Math.abs(previousX - currentX) +
Math.abs(previousY - currentY)) < 7) {
clear();
event = $.Event("hoverintent");
for (prop in orig) {
if (!(prop in event)) {
event[prop] = orig[prop];
}
}
// Prevent accessing the original event since the new event
// is fired asynchronously and the old event is no longer
// usable (#6028)
delete event.originalEvent;
target.trigger(event);
} else {
previousX = currentX;
previousY = currentY;
timeout = setTimeout(handler, 100);
}
}
timeout = setTimeout(handler, 100);
target.bind({
mousemove: track,
mouseout: clear
});
}
};
$(函数(){
函数subscribe\u accordion\u to\u hoverintent\u事件(accordioid){
$(手风琴ID)。手风琴({
事件:“单击鼠标悬停意图”
});
}
订阅“手风琴”活动(“手风琴1”);
订阅“手风琴”活动(“手风琴2”);
});
//折叠内容
$(函数(){
功能集\u accordion\u可折叠(accordioId){
$(手风琴ID)。手风琴({
可折叠:正确
});
}
将“手风琴”设置为“可折叠”(“手风琴1”);
将“手风琴”设置为“可折叠”(“手风琴2”);
});
//可排序功能
$(函数(){
功能集\u accordion\u可排序(accordioId){
$(手风琴ID)。手风琴({
标题:“>div>h3”
}).可排序({
轴:“y”,
手柄:“h3”,
停止:功能(事件、用户界面){
//IE在排序时不注册模糊
//因此,触发focusout处理程序以删除.ui状态焦点
ui.item.children(“h3”).triggerHandler(“focusout”);
}
});
}
将“手风琴”设置为“可排序”(“手风琴1”);
将“手风琴”设置为“可排序”(“手风琴2”);
});
/*
*hoverIntent |版权所有2011 Brian Cherne
* http://cherne.net/brian/resources/jquery.hoverIntent.html
*由jQueryUI团队修改
*/
$.event.special.hoverintent={
设置:函数(){
$(this.bind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
拆卸:函数(){
$(this.unbind(“mouseover”,jQuery.event.special.hoverintent.handler);
},
处理程序:函数(事件){
var currentX,currentY,超时,
args=参数,
target=$(event.target),
previousX=event.pageX,
previousY=event.pageY;
功能跟踪(事件){
currentX=event.pageX;
currentY=event.pageY;
};
函数clear(){
目标
.unbind(“mousemove”,轨迹)
.解除绑定(“鼠标出”,清除);
clearTimeout(超时);
}
函数处理程序(){
var prop,
orig=事件;
if((数学绝对值)(上一个x-当前x)+
Math.abs(先前-当前))<7){
清除();
事件=$.event(“hoverintent”);
用于(原始道具){
如果(!(事件中的道具)){
事件[道具]=原始[道具];
}
}
//自新事件发生后阻止访问原始事件
//异步激发,旧事件不再
//可用(#6028)
删除event.originalEvent;
目标。触发(事件);
}否则{
previousX=当前X;
先前的y=当前的y;
超时=设置超时(处理程序,100);
}
}
超时=设置超时(处理程序,100);
target.bind({
mousemove:track,
鼠标:清除
});
}
};
问题在于,您在设置手风琴时没有使用标题
属性,并在以后设置可排序时尝试添加它。在构建手风琴小部件时,必须设置它,如下所示:
function subscribe_accordion_to_hoverintent_event(accordionId) {
$(accordionId).accordion({
header: "> div > h3",
event: "click hoverintent"
});
}
您可以将其从可排序函数中删除:
function set_accordion_as_sortable(accordionId) {
$(accordionId).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");
}
});
}
JSFIDLE结果:
此外,您问题中的id不匹配,请务必检查这些id。HTML结构是什么?id已更新,并添加了accordion2骨架。你的解决方案很有魅力!
function set_accordion_as_sortable(accordionId) {
$(accordionId).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");
}
});
}