【问题标题】:jquery: unbind a loaded functionjquery:取消绑定加载的函数
【发布时间】:2010-09-13 16:26:30
【问题描述】:

我有一个功能可以在页面加载时调整图像背景的大小,

$(document).ready(function(){
loadBackground();
});

当我点击一个按钮时,我想“卸载”或“删除”这个加载的函数,这样我就可以重新加载这个函数,而不是把它加载到页面顶部,

$('.get-image').click(function(){
        $(window).unbind("resize",loadBackground);
        loadBackground();
 return false;
 });

但我不能让它工作!请问有什么想法吗?

谢谢, 刘

【问题讨论】:

  • “重新加载此功能”是什么意思?从哪里加载?怎么样?
  • 如果看不到.bind().resize() 行,就很难猜出正确的.unbind("resize") 行。 :-)

标签: jquery resize unbind document-ready


【解决方案1】:

根据你的cmets,我认为你根本不需要解绑:

您首先要在页面加载时加载背景,然后您要在点击发生时加载背景。

调整图像大小时背景会发生什么,应该是另一个绑定到$(window).resize()的单独函数...所以整个事情看起来像这样:

($(function() { ... });的意思和$(document).ready(function() { ... })一样,只是写起来更快:

$(function() { 
      // Define load BG
    function loadBackground() {
        /// ...
    }

      // Define what happens to the BG image on resize
      // this doesn't have to change. It should refer
      // to the generic `background-image`
    $(window).resize(function() { 
        // ...
    });

      // load BG when page is ready:
    loadBackground();

      // load another BG if there's a click:
      // This will effectively cancel the previous load bg
    $('.get-image').click(function() { 
        loadBackground();
        return false;
    });    
});

// I'm assuming you're somehow changing which BG image is loaded
// something like loadBackground(image)... and you could initially 
// load a default image, and then, if there's a click, you could
// determine what image should be based on what was clicked.

【讨论】:

  • 谢谢。刚刚尝试过,但它仍然不起作用......使用此 $(window).resize(loadBackground); 图像将不再调整大小; loadBackground 函数必须在 $(document).ready(function(){loadBackground();});
  • @lauthiamkok - 那是因为你必须创建一个对你的函数的引用,像这样:var loadBackground = function() { ... }...看看代码在jsFiddle中的样子
  • @lauthimakok - 我的答案中的所有代码都在 $(document).ready(function() { ... });
  • 很抱歉之前没有仔细阅读您的代码……谢谢您再试一次。谢谢。
  • 试过了,是的,设法删除了 loadBackground 函数。但我认为问题不在于这个功能本身,可能是我不明白的其他原因!对不起,我想我应该用下面的链接来解释问题,nano-visions.net/dump/html 但是当你第一次加载页面时很好,当我通过 ajax 加载所有内容时会出现问题。当您单击右上角的链接时,您会看到背景图像表现得很奇怪,例如,如果您单击“Asia Chic”,则图像会在打开和关闭时显示为黑色......谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多