2011-01-16 3 views
0

Действительно попав в javascript и оглядываясь по некоторым шаблонам. Один из них, который я получил, - это шаблон модуля. Кажется, это хороший способ подумать о функциях патронов, поэтому я пошел вперед и попытался реализовать его с помощью jQuery. Тем не менее, я наткнулся на уловку. Рассмотрим следующий код:Доступ к объектам jQuery в шаблоне модуля

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
     <title>index</title>   
     <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
     <script type="text/javascript" charset="utf-8"> 
      $(document).ready(function(){ 

       var TestClass2 = (function(){ 
        var someDiv;    
        return { 
         thisTest: function() 
         { 
           someDiv = document.createElement("div"); 
            $(someDiv).append("#index"); 
            $(someDiv).html("hello"); 
            $(someDiv).addClass("test_class"); 
         } 
        } 
       })(); 

       TestClass2.thisTest();   

      }); 
     </script> 

    </head> 

    <body id="index" onload=""> 

     <div id="name"> 
      this is content 
     </div> 

    </body> 
</html> 

Приведенный выше код предупреждает о содержании html в div и затем добавляет класс. Они используют методы jQuery. Проблема в том, что метод .html() работает отлично, но я не могу добавить класс. Никаких ошибок не возникает, и класс не добавляется. Что здесь происходит? Почему класс не добавляется в div?

+0

Работы для меня ... – lonesomeday

+0

Откуда вы знаете, что класс не добавлен? Вы дали ему визуальный стиль? Если вы тестируете результат, посмотрев «Просмотр источника» в своем браузере, вы не увидите результат. Вам нужно будет использовать инструменты разработчика, которые показывают обновления DOM. – user113716

+0

С каким браузером (-ами) и какой платформой (-ами) это происходит? –

ответ

2

А теперь, когда вы обновили свой вопрос, я могу лучше ответить на ваш вопрос. Вы должны изменить append на appendTo, считая, что хотите переместить вновь созданный элемент внутри уже существующего #index.

$(document).ready(function() { 

var TestClass2 = (function() { 
    var someDiv = $("#name"); 
    return { 
     thisTest: function() { 
      someDiv = document.createElement("div"); 
      $(someDiv) 
       .html("hello") 
       .addClass("test_class") 
       .appendTo("#index"); 
     } 
    } 
})(); 

TestClass2.thisTest(); 

}); 

Надеюсь, это поможет!

+0

Это так. Спасибо за помощь Лэнс! – Stewart

0

Я скопировал и вставил ваш код, и он работает для меня.

Убедитесь, что вы не просто просматриваете источник, чтобы узнать, применяется ли класс, потому что это просто показывает вам HTML-код, отправленный с сервера - любые обновления DOM, которые происходят через JavaScript, не будут отображаться.

Для просмотра живого DOM используйте инструмент, например Firebug или инспектор WebKit (входит в состав Safari и Chrome).

+0

Вы не используете firefox самостоятельно, случайно? – Stewart

+0

PS: Я использую инструмент для chrome и Firefox. Код работает в firefox, но не в хроме. :( – Stewart

0

Ваш код отлично работает! http://jsfiddle.net/lmcculley/p3fDX/

+0

Извините, код, который я написал, не лучший пример. Http://jsfiddle.net/p3fDX/2/ действительно моя проблема. – Stewart

+0

http://jsfiddle.net/lmcculley/p3fDX/5/ Я нашел ваш выпустил и исправил его. – Lance

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