2014-12-19 2 views
-3

Я все еще изучаю jQuery, и я создаю очень простую функцию jQuery, которая использует аргумент, а затем я вызываю divs в аргументе. Однако это не сработает. Я не получаю никаких ошибок в консоли. Вот мой код:вызов DOM в аргументе jQuery

function square(oneDiv) { 
    var divWidth = oneDiv.width(); 
    oneDiv.height(divWidth); 
} 

square($('.art')); 

Любая помощь будет очень признательна.

+0

Если селектор ('» .art'') ничего в этом документе, не совпадают, то код не будет делать ничего, и не будет никаких ошибок. Вы можете проверить это, зарегистрировав 'oneDiv.length'. – Pointy

+0

Каковы ошибки в консоли? – epascarello

ответ

1

Пар вещи могут быть идут не так.

1) DOM может не существовать к моменту запуска этого кода. Для этого случая, обернуть вызов функции в $(document).ready, как так, что будет гарантировать, что .art будет существовать при выполнении функции:

function square(oneDiv) { 
    var divWidth = oneDiv.width(); 
    oneDiv.height(divWidth); 
} 

$(document).ready(function() { 
    square($('.art')); 
}); 

2) .art элемент может иметь display: inline стиль. Убедитесь, что это либо display: block, либо display: inline-block. Высота и ширина стилей на встроенных элементах игнорируются.

Пример: http://jsfiddle.net/o3dqzgno/

0

попробуйте это. Кроме того, убедитесь, что ваш код запроса загружается после элемента с классом = элемент «искусства» загружается в йоте

function square(oneDiv) { 
    var myDiv = $(oneDiv); 
    var divWidth = myDiv.css('width'); 
    myDiv.css('height', divWidth); 
} 

square('.art'); 
+1

Почему? Передача объекта jQuery в качестве аргумента функции, то использование его методов совершенно нормально. BTW '.css ('width')! = .width()' – pawel

+0

Во избежание повторного использования было бы не лучше изменить его, чтобы использовать объект jQuery как параметр, а не только класс/id? – ntzm

+0

@natzim, я бы сказал, что метод «получения» элемента должен быть до метода, таким образом вы можете реорганизовать метод, но иметь интерфейс, т. Е. Квадрат (String); тоже самое. Например, вы можете прекратить использование jquery и использовать mootools (!), Вы все равно можете использовать квадрат (String) и рефакторинг только для метода – atmd