我确实看过this quesiton,虽然我可以弄清楚如何实现这一点。
基本代码覆盖是:
jQuery.noConflict();
jQuery(document).ready(function($){
$("button").click(function(e){
popupOverlay();
popupDisplay();
e.preventDefault();
});
function popupOverlay() {
var overlayCss = {
"width" : $(document).width(),
"height" : $(document).height(),
"display" : 'block'
}
$("#popupOverlay").css(overlayCss);
}
function popupDisplay() {
var popup = $("#popup");
etc etc code to work out the central position for popup
$(popup).css({
'top': yPosition + 'px',
'left': xPosition + 'px',
'display' : 'block'
});
}
});
他们上面的工作正常,但我想重新调用上面的函数,如果通过在上面添加以下内容来调整窗口大小:
jQuery(window).resize(function() {
popupOverlay();
popupDisplay();
});
我得到的错误是: popupOverlay未定义
我已尝试将弹出功能从文档中移出,但后来我收到错误: $不是函数
我必须非常小心这段代码,它不会与网站上已经使用过的其他JavaScript库发生任何冲突。
答案 0 :(得分:2)
它不起作用,因为函数popupOverlay
和popupDisplay
在$(document).ready
内,并且您试图在声明范围之外访问它。
jQuery.noConflict();
// DOM Ready event
jQuery(document).ready(function ($) {
$("button").click(function (e) {
popupOverlay();
popupDisplay();
e.preventDefault();
});
});
//window resize event
jQuery(window).resize(function () {
popupOverlay();
popupDisplay();
});
//custom functions
function popupOverlay() {
var overlayCss = {
"width": $(document).width(),
"height": $(document).height(),
"display": 'block'
}
jQuery("#popupOverlay").css(overlayCss);
}
function popupDisplay() {
var popup = jQuery("#popup");
//etc etc code to work out the central position
//for popup
jQuery(popup).css({
'top': yPosition + 'px',
'left': xPosition + 'px',
'display': 'block'
});
}
答案 1 :(得分:1)
这应该有用。
jQuery.noConflict();
jQuery(document).ready(function(){
var $ = jQuery;
$("button").click(function(e){
popupOverlay();
popupDisplay();
e.preventDefault();
});
function popupOverlay() {
var overlayCss = {
"width" : $(document).width(),
"height" : $(document).height(),
"display" : 'block'
}
$("#popupOverlay").css(overlayCss);
}
function popupDisplay() {
var popup = $("#popup");
etc etc code to work out the central position for popup
$(popup).css({
'top': yPosition + 'px',
'left': xPosition + 'px',
'display' : 'block'
});
}
jQuery(window).resize(function() {
popupOverlay();
popupDisplay();
});
});
答案 2 :(得分:0)
声明document.ready()之外的函数 没有理由在那里宣布它们,
“不工作”是由于该函数属于其他命名空间 如果你还要在$(function(){});
中为你的事件添加句柄,你仍然可以使用它们