与jquery合并/压缩时jquery Confirm插件不起作用
Posted
技术标签:
【中文标题】与jquery合并/压缩时jquery Confirm插件不起作用【英文标题】:jquery Confirm plugin not work when merge/compress with jquery 【发布时间】:2012-04-19 12:20:17 【问题描述】:我找到this jquery plugin 进行内联确认。我将所有 js 文件压缩/合并为一个以优化 http 请求(这是手册)。现在这个文件的顶部是 jquery Library 1.7.1,然后我放了内联确认插件。因此,当位于带有 jquery 库的文件中时,此插件不起作用。我的问题是什么?
e.x : 正常 : 分开(这个工作)
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/inline-confirmation.js"></script>
e.x:压缩到一个文件(jquery + inline-confirmation)不工作
<script type="text/javascript" language="javascript" src="./js/main.js"></script>
内联确认插件:
jQuery.fn.confirm = function(options)
options = jQuery.extend(
msg: 'Are you sure?',
stopAfter: 'never',
wrapper: '<span></span>',
eventType: 'click',
dialogShow: 'show',
dialogSpeed: '',
timeout: 0
, options);
options.stopAfter = options.stopAfter.toLowerCase();
if (!options.stopAfter in ['never', 'once', 'ok', 'cancel'])
options.stopAfter = 'never';
options.buttons = jQuery.extend(
ok: 'Yes',
cancel: 'No',
wrapper:'<a href="#"></a>',
separator: '/'
, options.buttons);
// Shortcut to eventType.
var type = options.eventType;
return this.each(function()
var target = this;
var $target = jQuery(target);
var timer;
var saveHandlers = function()
var events = jQuery.data(target, 'events');
if (!events && target.href)
// No handlers but we have href
$target.bind('click', function() document.location = target.href);
events = jQuery.data(target, 'events');
else if (!events)
// There are no handlers to save.
return;
target._handlers = new Array();
for (var i in events[type])
target._handlers.push(events[type][i]);
// Create ok button, and bind in to a click handler.
var $ok = jQuery(options.buttons.wrapper)
.append(options.buttons.ok)
.click(function()
// Check if timeout is set.
if (options.timeout != 0)
clearTimeout(timer);
$target.unbind(type, handler);
$target.show();
$dialog.hide();
// Rebind the saved handlers.
if (target._handlers != undefined)
jQuery.each(target._handlers, function()
$target.click(this.handler);
);
// Trigger click event.
$target.click();
if (options.stopAfter != 'ok' && options.stopAfter != 'once')
$target.unbind(type);
// Rebind the confirmation handler.
$target.one(type, handler);
return false;
)
var $cancel = jQuery(options.buttons.wrapper).append(options.buttons.cancel).click(function()
// Check if timeout is set.
if (options.timeout != 0)
clearTimeout(timer);
if (options.stopAfter != 'cancel' && options.stopAfter != 'once')
$target.one(type, handler);
$target.show();
$dialog.hide();
return false;
);
if (options.buttons.cls)
$ok.addClass(options.buttons.cls);
$cancel.addClass(options.buttons.cls);
var $dialog = jQuery(options.wrapper)
.append(options.msg)
.append($ok)
.append(options.buttons.separator)
.append($cancel);
var handler = function()
jQuery(this).hide();
// Do this check because of a jQuery bug
if (options.dialogShow != 'show')
$dialog.hide();
$dialog.insertBefore(this);
// Display the dialog.
$dialog[options.dialogShow](options.dialogSpeed);
if (options.timeout != 0)
// Set timeout
clearTimeout(timer);
timer = setTimeout(function() $cancel.click(); $target.one(type, handler);, options.timeout);
return false;
;
saveHandlers();
$target.unbind(type);
target._confirm = handler
target._confirmEvent = type;
$target.one(type, handler);
);
谢谢
【问题讨论】:
在压缩文件中。插件代码之前有jQuery库吗? 是的,当然。我把这个告诉我的问题:现在这个文件的顶部是 jquery 1.7.1,然后我放了内联确认插件 尝试显示整个压缩文件。另外,您真的想将库和插件放在一个文件中吗?我的意思是,如果有更新怎么办? 【参考方案1】:我同意 rgin 的观点,我们可能需要查看整个文件(并且您可能应该将其分开),但我认为可能只是文件被缓存了。按 ctrl-F5 或手动清除缓存。
【讨论】:
以上是关于与jquery合并/压缩时jquery Confirm插件不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Handsontable:jquery 合并标题,水平滚动错误