2012-06-02 2 views
0

Привет Я создаю попытку создать интерфейс для веб-сайта электронной коммерции как персональный проект. С самого начала в веб-разработке кажется, что я наткнулся на проблему, которую я не понимаю иЕ с помощью функции загрузки JQuery, чтобы изменить содержание 2 див на click.This является HTML моего кода в:jQuery load function links wont work

<ul id="title"> 
       <li><h2 class="title"><a href="" class="selected">Configureaza</a></h2></li> 
       <li><h2 class="title"><a href="">Personalizeaza</a></h2></li> 
       <li><h2 class="title"><a href="">Adonuri</a></h2></li> 
       <li><h2 class="title"><a href="">Verifica</a></h2></li> 
</ul> 
<div id="tot"> 
     <div id="configureaza"> 
       <div id="stuff"> 
        <img src="img/windows.jpg"/> 
          <div id="select"> 
           <h2>Selecteaza Produsul Microsoft</h2> 
           <form> 
            <ul> 
             <li><input type="checkbox" value="Windows Vista"/>Windows Vista<span>+320 lei</span></li> 
             <li><input type="checkbox" value="Windows 7"/>Windows 7<span>+440 lei</span></li> 
             <li><input type="checkbox" value="Microsoft Office"/>Microsoft Office<span>+220 lei</span></li>  
            </ul> 
           </form> 

          </div> 
         </div> 
         <ul id="links"> 
          <li><a href=""><img src="img/msvista_on.gif" title="Sistem de Operare"/></a></li> 
          <li><a href=""><img src="img/placadebaza.png" title="Placa de Baza"/></a></li> 
          <li><a href=""><img src="img/procesor.png" title="Procesor"/></a></li> 
          <li><a href=""><img src="img/aw_optical_on.gif" title="Unitate Optica"/></a></li> 
          <li><a href=""><img src="img/hd.jpg" title="Hard-Disk"/></a></li> 
          <li><a href=""><img src="img/vs4.jpg" title="Rami"/></a></li> 
          <li><a href=""><img src="img/vc.jpg" title="Placa Video"/></a></li> 
         </ul> 
        </div> 

      </div> 

JQuery:

$(document).ready(function(){ 
      $('img[title="Sistem de Operare"]').click(function(e){ 
       e.preventDefault(); 
       $('div#stuff').load('win.html'); 


      }) 
      $('img[title="Placa de Baza"]').click(function(e){ 
       e.preventDefault(); 
       $('div#stuff').load('motherboard.html'); 

      }) 

      $("ul#title a").click(function(e){ 
       e.preventDefault(); 
       var link = $(this).text(); 
       if(link === "Configureaza"){ 

        $('div#tot').load('Configureaza.html'); 

       }else if(link === "Personalizeaza"){ 

        $('div#tot').load('Personalizeaza.html'); 

       }else if(link === "Adonuri"){ 

        $('div#tot').load('Addons.html'); 

       }else{ 

        $('div#tot').load('Verifica.html'); 

       } 
       $('ul#title a').removeClass('selected'); 
       $(this).addClass('selected');  

      }) 

     }) 

я только разместил код для первых 2 ссылок из ul # ссылок, потому что другой код аналогичен. Когда я впервые загружаю страницу, и я нажимаю Например, $ ('img [title = "Sistem de Operare"]') функция загрузки работает нормально, и она загружает элементы, указанные там. Но если я нажму на любую из ссылок в div # tot и затем вернусь на главную страницу другие ссылки больше не работают, и я заметил, что # link включен в ссылку. Как я могу это решить?

Другая проблема, которую я не понимаю, заключается в том, что когда я пытаюсь перейти к папке, где у меня есть страница, и откройте ее вручную, а ссылки не будут работать с самого начала. Но если я открою их из netbeans, например, они все работает. Что я делаю неправильно?

ответ

1

click() запускается один раз, когда ваша страница сначала загружается. Когда вы добавляете новые элементы с load(), хотя селектор, который вы использовали с click(), соответствует этим новым элементам, этот селектор не запускается снова, и функция click() не запускается на них.

В старых версиях jQuery мы использовали для этого что-то под названием «live()», но теперь предпочтительным методом является использование «on()». Так что это:

$("ul#title a").click(function(e){ 

должны стать:

$(document).on("click", "ul#title a", function(e){ 

Это говорит о том, когда документ будет нажата, если цель мероприятия совпадает с «уль # Пометка» селектор, идти вперед и выполнить щелчок обработчик. Поскольку документ находится с самого начала, и поскольку обработчик находится в документе, не имеет значения, когда элементы «ul # title a» добавляются на страницу, они всегда будут работать.