2013-05-23 4 views
0

Недавно я разработал некоторый скрипт для настройки параметров некоторых элементов сайта на размер окна. Он не показывает ошибок, но ничего не меняет. Странно, что во всех местах в скриптах массивы читаются так, как я хотел, поэтому я думаю, что это не так. С другой стороны, когда я использовал аналогичный код, но без массивов, он работал отлично, бот выглядел уродливо.Сценарий настройки элементов JQuery

jQuery.fn.extend({ 
    MscreenAdjust: function (x,a,b,c,d) { 
     var windowWidth = $(window).width(); 
     if (windowWidth > 1500) { 
      $(this).css(x, a); 
     } 
     else if (windowWidth > 1050) { 
      $(this).css(x, b) 
     } 
     else if (windowWidth > 800) { 
      $(this).css(x, c) 
     } 
     else { 
      $(this).css(x, d) 
     } 
    } 
}); 

$(document).ready(function() { 
    $(".center").MscreenAdjust("width", 1390, 980, 780, 300); 
    $("#content").MscreenAdjust("margin-right", "10%", 0, 0, 0); 
    $("#menu_bar li").MscreenAdjust("width", "auto", "auto", "auto", "100%"); 
}); 
$(window).resize(function() { 
    $(".center").MscreenAdjust("width", 1390, 980, 780, 300); 
    $("#content").MscreenAdjust("margin-right", "10%", 0, 0, 0); 
    $("#menu_bar li").MscreenAdjust("width", "auto", "auto", "auto", "100%"); 
}); 

Итак, вот текущий код:

jQuery.fn.extend({ 
    MscreenAdjust: function (toAdjust) { 

     toAdjust.forEach(function (elem) { 

      var windowWidth = $(window).width(); 
      var ItemtoAdjust = elem; 

      if (windowWidth > 1500) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[2]); 
      } 
      else if (windowWidth > 1050) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[3]); 
      } 
      else if (windowWidth > 800) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[4]); 
      } 
      else { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[5]); 
      } 
     }); 

    } 
}); 
var myArray = [ 
    [".center","width", 1390, 980, 780, 300], 
    ["#content","margin-right", "10%", 0, 0, 0], 
    ["#menu_bar li","width", "auto", "auto", "auto", "100%"] 
]; 

$(document).ready().MscreenAdjust(myArray); 
$(window).resize().MscreenAdjust(myArray); 

EDIT:

Я изменил функцию от JQuery, характерные для нормального, и все проблемы исчезли. Вот код:

function MscreenAdjust(toAdjust) { 

     toAdjust.forEach(function (elem) { 

      var windowWidth = $(window).width(); 
      var ItemtoAdjust = elem; 

      if (windowWidth > 1500) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[2]); 
      } 
      else if (windowWidth > 1050) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[3]); 
      } 
      else if (windowWidth > 800) { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[4]); 
      } 
      else { 
       $(ItemtoAdjust[0]).css(ItemtoAdjust[1], ItemtoAdjust[5]); 
      } 
     }); 
    } 

var myArray = [ 
    /* TARGET  PROPERTY  >1500  >1050  >800  =< 800 */ 
    [".center",  "width",  "1390px", "980px", "780px", "300px"], 
    ["#content", "margin-right", "10%",  0,   0,   0], 
    ["#menu_bar li","width",  "auto",  "auto",  "auto",  "100%"] 
]; 

$(document).ready(function() { 
    MscreenAdjust(myArray); 
}); 
$(window).resize(function() { 
    MscreenAdjust(myArray); 
}); 
+0

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

+0

в приведенном выше примере, являются; отсутствует, и вы должны определить, какие единицы. например, css ('width', '1390') не будет работать, я думаю, попробуйте '1390px'. – Alex

ответ

0

как было упомянуто @roasted в комментариях

$(document).ready(function(){ $(this).MscreenAdjust(myArray); }) 
$(window).resize(function(){ $(this).MscreenAdjust(myArray); }) 
+0

Все еще ничего. Единственное изменение заключается в том, что теперь он вызывает некоторые ошибки: Исключено: не указано: ReferenceError: Неопределенная переменная: MscreenAdjust – smbdelse

+0

ah..didnt видят, что функция была расширенным плагином jquery ... обновлен мой ответ –

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