Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Jquery не обрабатывает созданные элементы
 
 автор: sanchescom   (27.11.2011 в 11:21)   письмо автору
 
 

Проблема такая. Аяксом подгружаю xml файл, создаю на основе него меню. На jquery пишу обработчик для этого меню. Вся проблема в том, что если это меню сразу прописать в коде, то все работает, а если оно генерится то не работает.


$.ajax({
            type: "GET", 
            url: "http://test1.ru/v/vacantions.xml", 
            dataType: "xml", 
            success: function(xml) {
                var vacancy = "<ul class=\"job-vacancy-menu\">";        
                $(xml).find('vacantion').each(function(){
                    vacancy += "<li>\
                        <a href=\"javascript:void(0)\" class=\"job-vacancy-descshow\">"+$(this).attr('title')+"</a><br>\
                        LOCATION: "+$(this).attr('location')+"\
                        <div class=\"job-vacancy-desc\">\
                            <div class=\"job-vacancy-desc-top\"></div>\
                            <div class=\"job-vacancy-desc-middle\"> \
                                <div class=\"job-vacancy-desc-info\">";
                            $(this).find('blocks').each(function(){
                                vacancy += "<h3>"+$(this).attr('title')+":</h3> \
                                    <ul> \
                                    </ul>";
                            });
                       vacancy += "</div> \
                            </div>\
                            <div class=\"job-vacancy-desc-bottom\"></div>\
                        </div>\
                    </li>";
                    
                });    
                vacancy += "</ul>";
                $("#content-job-vacancy").html(vacancy);
                //alert(vacancy);        
            }
        });    
        
        $("#content-job-vacancy ul.job-vacancy-menu li").mouseover(function(){
             $(this).attr("class","action");
            $(this).find(".job-vacancy-desc-info").attr("style","display:block");
        }).mouseout(function(){
            $(this).attr("class","");
            $(this).find(".job-vacancy-desc-info").attr("style","display:none");
        });

  Ответить  
 
 автор: nikita2206   (27.11.2011 в 15:24)   письмо автору
 
   для: sanchescom   (27.11.2011 в 11:21)
 

$.ajax({ 
            type: "GET",  
            url: "http://test1.ru/v/vacantions.xml",  
            dataType: "xml",  
            success: function(xml) { 
                var vacancy = "<ul class=\"job-vacancy-menu\">";         
                $(xml).find('vacantion').each(function(){ 
                    vacancy += "<li>\ 
                        <a href=\"javascript:void(0)\" class=\"job-vacancy-descshow\">"+$(this).attr('title')+"</a><br>\ 
                        LOCATION: "+$(this).attr('location')+"\ 
                        <div class=\"job-vacancy-desc\">\ 
                            <div class=\"job-vacancy-desc-top\"></div>\ 
                            <div class=\"job-vacancy-desc-middle\"> \ 
                                <div class=\"job-vacancy-desc-info\">"; 
                            $(this).find('blocks').each(function(){ 
                                vacancy += "<h3>"+$(this).attr('title')+":</h3> \ 
                                    <ul> \ 
                                    </ul>"; 
                            }); 
                       vacancy += "</div> \ 
                            </div>\ 
                            <div class=\"job-vacancy-desc-bottom\"></div>\ 
                        </div>\ 
                    </li>"; 
                     
                });     
                vacancy += "</ul>"; 
                $("#content-job-vacancy").html(vacancy); 
                //alert(vacancy);              
         
        $("#content-job-vacancy ul.job-vacancy-menu li").mouseover(function(){ 
             $(this).attr("class","action"); 
            $(this).find(".job-vacancy-desc-info").attr("style","display:block"); 
        }).mouseout(function(){ 
            $(this).attr("class",""); 
            $(this).find(".job-vacancy-desc-info").attr("style","display:none"); 
        });
            } 
        });

  Ответить  
 
 автор: nikita2206   (27.11.2011 в 15:26)   письмо автору
 
   для: sanchescom   (27.11.2011 в 11:21)
 

почитай про js-шаблонизацию

  Ответить  
 
 автор: AlexSol   (27.11.2011 в 16:27)   письмо автору
 
   для: sanchescom   (27.11.2011 в 11:21)
 

через .live() вешайте обработчики

  Ответить  
 
 автор: TetRiska   (28.11.2011 в 01:53)   письмо автору
 
   для: AlexSol   (27.11.2011 в 16:27)
 

лучше через .bind, я раз так попробовал через .live, у меня с каждым вызовом ф-ции, количество росло пропорционально.

  Ответить  
 
 автор: AlexSol   (28.11.2011 в 07:56)   письмо автору
 
   для: TetRiska   (28.11.2011 в 01:53)
 

не удивительно. live надо указать один раз и не повторять при добавление новых элементов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования