2012-03-26 2 views
0
<script type="text/javascript" src="jquery-1.7.2.js"></script> 
<script type="text/javascript"> 

var mySite={}; 

mySite.title=$('h1'); 
mySite.makeRed= function(){ 
return mySite.title.css('color','red'); 
}; 


$(document).ready(function() { 

mySite.makeRed(); 


}); 


</script> 

Добрый день. Почему метод, вызванный внутри функции, ничего не возвращает?JQuery и области javascript

+0

Можете ли вы объяснить свой вопрос? –

+0

Что вы подразумеваете под возвращением? У вас есть проблема с селектором заголовков. 'mySite.title = $ ('h1');' не будет выбирать элемент 'h1' в это время, потому что DOM не готов. Он должен быть внутри обработчика '$ (document) .ready()', чтобы иметь возможность выбирать этот элемент. – Shef

ответ

1

Я полагаю, эти теги сценариев находятся в ГОЛОВке документа.

Когда вы сделаете это за пределами готовый обработчик:

mySite.title=$('h1'); 

Элемент h1 это, вероятно, не существует в DOM. Это цель готового обработчика: убедитесь, что DOM готов к работе.

Вы можете переместить свой тег скрипта в конец тела (прямо перед тегом </body>). Это имеет тот же результат, что и готовый обработчик, когда DOM анализируется последовательно.

Или вы можете захватить элемент H1 внутри готового обработчика.

+0

+1. Это проблема. :) – Shef

+0

Есть ли способ инициализировать, а затем просто вызвать метод при загрузке? – DevX

+0

* ... Переместите свой тег скрипта в конце тела (прямо перед тегом '') ... * –

0

У вас есть что-то неправильно.

var mySite={}; 

mySite.title=$('<h1/>').html("Hello World"); // Set some text and create the tag tag! 

mySite.makeRed= function(){ 
return mySite.title.css('color','red'); 
}; 


$(document).ready(function() { 



    $("body").append(mySite.makeRed()); // Append it to the dom 

});​ 

http://jsfiddle.net/eZzYz/1/

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