2013-12-10 5 views
1

У меня есть сценарий для изменения размера изображений в соответствии с размером экрана.Повторно запустить скрипт после загрузки нового содержимого изображений в div

Сценарий для изображений:

$(document).ready(function($){ 

     var ratios, 
    adjustSize = function(){ 

    var total = 520, 
     win = $(window), 
     winW = win.width(), 
     winH = win.height()-150; 

    $('#container img').each(function(i){ 
     var w = winH * ratios[i]; 
     $(this).css({ 
      height: winH, 
      width : w 
     }); 
    total += w; 
    }); 
    $('body').width(total); 
}; 

    $(window).load(function(){ 
     ratios = $('#container img').map(function(){ 
      return $(this).width()/$(this).height(); 
     }); 
     adjustSize(); 
    }) 
    .resize(function(){ adjustSize(); }); 
}); 

Все прекрасно за исключением, когда я пытаюсь загрузить новое содержание в DIV из внешнего файла работает этот скрипт для изменения размера не повторно запустить снова и изменить размер картинки.

Скрипт для изменения содержания:

$(document).ready(function(){ 
      $("#id").click(function(){ 
      $('#container').load('some.html').hide().fadeIn('slow'); 
      }); 
     }); 

Как я могу изменить сценарий? Я пробовал событие .click(), но это не сработало, или, может быть, я что-то делаю неправильно. Я действительно застрял, может кто-нибудь помочь, пожалуйста!

Благодаря

ответ

1

Вы пытаетесь получить доступ к «adjustResize()» функции вне контекста.

Попробуйте добавить это в самом начале файла

var adjustSize; 

, а затем добавить «;» вместо «» в „соотношениях“ так он будет выглядеть следующим образом:

var ratios; 
adjustSize = function(){ 
0

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

$(document).ready(function(){ 
     // Click event is needed assuming that you want the load to happen only when the element with id 'id' is clicked 
     $("#id").on('click', function(){ 
      $('#container').load('some.html', function() { 
       // Do something after load (wrap your image resizing code in a function and call it here) 
      }) 
      .hide().fadeIn('slow'); 
     }); 
    }); 
+0

Я добавляю эти строки в скрипт, и это почти идеально. Я сделал тестовую страницу. [тестовая страница] (http://natasamedvesek.com/test/) Не могли бы вы посмотреть на это. Скрипт сразу не меняет ширину содержимого, но второй раз при нажатии. А также, когда я нажимаю на ссылку, новый контент не начинает прокрутку с самого начала, а в том месте, где закончилось предыдущее содержимое. – user1879882

2

Вызов adjustSize() (перед укрытием)

$('#container').load('some.html',function(){ 
    adjustSize(); 
    $(this).hide().fadeIn('slow'); 
}); 
+0

спасибо, но это не работает – user1879882

+0

Я сделал тестовую страницу, с помощью второго ответа, если вы хотите посмотреть. Я все еще не работаю нормально, но я подхожу ближе. [Страница тестирования] (http://natasamedvesek.com/test/) – user1879882

+0

@ user1879882 Если вы хотите получить помощь, поместите свой код в jsfiddle ... –

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