jQuery preventDefault + trigger 结合使用注意事项

最近写一个类似outlookbar的界面的JQuery插件发现。如下问题代码如下:

var settings = {
openTag: "a:first", //默认第一个标签的查询条件
attrName: "_for", //a 目的地址
selStyleCss: "thisclass", //选中样式的css
eventName: "click", //事件名称
modifyStyleCss: "background-position", //css样式,通过此样式实现上下箭头的变换
downStyle: "left bottom", //下箭头
upStyle: "left top", //上箭头
navWorkspace: "#workspace", //工作空间导航id
workspace: "#mainContent", //工作空间ID
duration: "fast"
}, navsel;
function isVisible(elem) {
return elem.is(":visible");
}
function ChangeNav(cur) {
SetNavUnSelected(navsel);
SetNavSelected(cur);
navsel = cur;
}
function SetNavSelected(nav) {
var url;
url = nav.attr(settings.attrName);
nav.addClass(settings.selStyleCss);
$(url).show();
}
function SetNavUnSelected(nav) {
var url;
url = nav.attr(settings.attrName);
nav.removeClass(settings.selStyleCss);
$(url).hide();
}
jQuery.fn.outlookbar = function () {
var beforeA;
$(document).ajaxStart(function () {
$.blockUI({
message: '<img src="../Content/images/busy.gif" alt="请等待..."/>',
css: {
backgroundColor: "#666666",
opacity:0.5,
top: ($(window).height() - 32) / 2 + "px",
left: ($(window).width() - 32) / 2 + "px",
width: "32px",
border: "none"
}
});
});
$(document).ajaxStop(function () {
$.unblockUI();
});
this.delegate("dt", settings.eventName, function () {
var $dt, $dd;
$dt = $(this);
$dd = $dt.siblings("dd");
if (!isVisible($dd)) {
$dt.css(settings.modifyStyleCss, settings.downStyle);
}
else {
$dt.css(settings.modifyStyleCss, settings.upStyle);
}
$dd.slideToggle(settings.duration);
});
this.delegate("a", settings.eventName, function () {
var $workspace, $self, urlAjax;
$workspace = $(settings.workspace);
$self = $(this);
urlAjax = $self.attr("_for");
if (!isVisible($workspace)) {

//出问题的代码

$(settings.navWorkspace).trigger("click");  //问题:执行这句代码以后不继续执行后面的函数了。后来发现$(settings.navWorkspace).click事件包含preventDefault。此处直接返回了不知道为啥?是Bug还是?请各位大侠指导!!!


  // 解决问题的新代码 ChangeNav($(settings.navWorkspace)); 
}
$self.addClass(settings.selStyleCss);
if (beforeA) {
beforeA.removeClass(settings.selStyleCss);
}
beforeA = $self;
$.ajax({
type: "GET",

url: urlAjax,
cache: false,
success: function (data) {
$(settings.workspace).html(data);
},
error: function (data, status, set) {
$(settings.workspace).html(data);
}
});
event.preventDefault();
});
};
jQuery.fn.navmenu = function () {
navsel = this.find(settings.openTag);
this.delegate("a", settings.eventName, function () {
var $self;
$self = $(this);
if (!$self.hasClass(settings.selStyleCss)) {
ChangeNav($self);
}
event.preventDefault();
});
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值