2010-09-13 2 views
2

У меня есть функция, которая будет изменять размеры фонового изображения при загрузке страницы,JQuery: отвязать загруженную функцию

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

, и я хочу, чтобы «разгрузить» или «удалить» эту загруженную функцию, когда я нажимаю на кнопка, так что я могу загрузить эту функцию заново вместо загрузки его в верхней части страницы,

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

, но я не могу заставить его работать! любые идеи, пожалуйста?

спасибо, Lau

+0

Что вы имеете в виду, «нагрузка эта функция заново» Загрузить из которых Как – Pointy

+0

трудно угадать правильный '.unbind («размер»)' линии, не будучи в состоянии видеть?? ваш '.bind()' или '.resize()' строка. :-) –

ответ

0

на основе ваших комментариев, я не думаю, что вам нужно отвязать вообще:

Сначала необходимо загрузить фон при загрузке страницы, а затем вы хотите для загрузки фона при щелчке.

Что происходит на заднем плане, когда изображение с измененным размером должен быть другой отдельную функцию, которая связана с $(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. 
+0

спасибо. просто попробовал, но он все еще работает ... изображение больше не будет изменяться с этим $ (window) .resize (loadBackground); функция loadBackground должна находиться внутри $ (document) .ready (function() {loadBackground();}); – laukok

+1

@lauthiamkok - Это потому, что вам нужно создать ссылку на вашу функцию, например: 'var loadBackground = function() {...}' ... посмотреть, как выглядит код в [jsFiddle] (http : //jsfiddle.net/xTfCX/) –

+0

@lauthimakok - И весь код в моем ответе находится внутри '$ (document) .ready (function() {...});' –

Смежные вопросы