我尝试使用venobox加载一个div,在这个div中我将元素绑定到click函数,如小提琴所示
http://jsfiddle.net/mosta/gm9yf6vm/
如果您点击"删除"它会显示警报,但在加载venobox后它无法正常工作
$(".btnconfirmdelete").click(function (event) {
alert('');
});
Apreciate your help 感谢
答案 0 :(得分:0)
jQuery,以及其他一些库,使用“ $ ”符号作为实际对象名称的别名 - 的jQuery ”。
由于多个库可能会尝试声明相同的美元别名,并且具有不同的API,因此代码期望美元符号与您的特定库混淆可能在页面之间不一致,具体取决于所使用的库 - 或者根本不使用冲突的库是全球使用的。
有很多方法可以解决这个问题 -
在代码中仅使用完整的jQuery对象名称。您提供的样本将变为 -
jQuery(".btnconfirmdelete").click(function (event) {
alert('');
});
您可以并且可能应该使用jQuery no conflict使用jQuery取消注册别名,以避免与其他库作斗争 -
jQuery.noConflict();
您可以通过将jQuery noConflict函数的结果赋给变量,将jQuery分配给另一个别名。
var foo = jQuery.noConflict();
foo(".btnconfirmdelete").click(function (event) {
alert('');
});
您可以将jQuery替换为立即调用函数表达式范围内的美元符号(请记住JavaScript中的变量具有函数而不是块作用域)。您再次想要使用noConflict来避免函数之外的问题。
(function ($) {
// Other code
$(".btnconfirmdelete").click(function (event) {
alert('');
});
// More code
})(jQuery)
jQuery有一个很好的帮助页面,可以在http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
进行扩展要完成你的特定答案,你的代码中有一个错误 - 函数'callme'在两个函数范围之外被引用。
我有forked your JSFiddle,修正后的代码如下。我也改进了你的格式,这是一个很好的做法,因为它可以帮助你直观地理解代码heirachy,以避免这样的问题 -
(function ($, Sys) {
$(document).ready(
function () {
$('.venobox').venobox();
/* custom settings */
$('.venobox_custom').venobox({
framewidth: '400px', // default: ''
frameheight: '300px', // default: ''
border: '10px', // default: '0'
bgcolor: '#5dff5e', // default: '#fff'
titleattr: 'data-title', // default: 'title'
numeratio: true, // default: false
infinigall: true // default: false
});
$(".btnconfirmdelete").click(function (event) {
alert('Delete');
});
function callme () {
alert('Called');
}
callme();
});
}(jQuery, window.Sys));