2013-02-21 3 views
0

У меня есть элемент, который мне нужно переместить в экран при нажатии кнопки, а затем отменить экран при повторном нажатии.Определить ширину элемента

Проблема в том, что я бы не хотел писать определенную ширину поля, потому что это не всегда будет одинаковым. Я думал, что этот код должен это сделать, но я получаю ссылку ReferenceError «Не могу найти переменную: ширина». Есть идеи, как улучшить его?

var itemWidth = $("#about_box").css(width); 

console.log($("#about_box").width()); 

var itemOut = false; 

$(document).ready(function() { 

    $("#about").click(function(){ 

     var value1 = 30; 
     var value2 = -itemWidth; 

     console.log(itemOut); 

     if (itemOut == false) { 
      $("#about_box").stop(); 
      $("#about_box").animate({left: value1}, 350); 
      itemOut= true; 
     } else { 
      $("#about_box").stop() 
      $("#about_box").animate({left: value2}, 150); 
      itemOut = false; 
     } 


    }); 

}); 
+0

Какое значение 'width' вы передаете в параметре для этой строки? 'var itemWidth = $ (" # about_box "). css (width);' –

+0

Почему эти строки отличаются? var itemWidth = $ ("# about_box"). css (width); console.log ($ ("# about_box"). Width()); –

+0

Почему ваши первые три строки кода за пределами готового вызова документа? – j08691

ответ

2

Вы должны использовать один из следующих вариантов:

$("#about_box").width() //element only width 
$("#about_box").innerWidth() //element + padding width 
$("#about_box").outerWidth() //element + padding + border width 

И использовать его внутри $ (документ) .ready обработчика, так как до того, что вы, вероятно, не получит любую ширину, как DOM еще не отображается ,

+0

Отлично, используя .outerWidth и перемещая его внутри $ (document). Уже сделал трюк - спасибо! – Rune

0

Вы пропустили Кавычки здесь

var itemWidth = $("#about_box").css(width);

должен быть

var itemWidth = $("#about_box").css("width");

0

Эта строка содержит синтаксическую ошибку и бросить исключение: var itemWidth = $("#about_box").css(width);

Yo и нужно использовать:

var itemWidth = $("#about_box").css('width');

или

var itemWidth = $("#about_box").width();

0
var itemWidth = $("#about_box").css(width); 

изменение:. вар itemWidth = $ ("# about_box") шириной(); и рассмотрите, нужна ли вам внешняя ширина (прокладка) или нет.

0

Это должно быть:

var itemWidth = $("#about_box").css("width"); 

т.е. ширина в кавычках.

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