2010-08-04 115 views
0

代碼的這種安寧適用於第一次單擊。但它似乎無法從下次點擊獲取新ID。它背後的想法是顯示一張表格,並單擊它首先隱藏的按鈕並顯示第二部分。任何想法,我做錯了什麼? 我想它與「this」有關,但根據我的理解,它也應該從第二個鏈接獲得id。Mootools單擊事件問題

 window.addEvent('domready', function() 
      { 
      $('page_2').slide('hide'); 
      $('page_3').slide('hide'); 
      $('page_4').slide('hide'); 
      $('page_5').slide('hide'); 
      var togglePrefix = 'toggle_', boxPrefix = 'page_', emptyPrefix = ''; 
      var links = $('submit_box').getElements('a'); 
      links.addEvent('click', function(e) 
       { 
       e.stop(); 
       var id = $(this.get('id').replace(togglePrefix,emptyPrefix)); 
       var id_new = parseInt($(this).get('id').replace(togglePrefix, emptyPrefix)) + 1; 
       var next = ('page_'+id_new); 
       var id_old = $(this.get('id').replace(togglePrefix,boxPrefix)); 
       $(id_old).set('slide', {duration: 'long', transition: 'linear'}); 
       $(id_old).slide('out'); 
       $(next).slide('in'); 
       }); 
      }); 

的HTML遵循以下模式:

<div id="page_1"> 

    <div id="inhalt-gewinn"> 
     <div id="gewinn_bild"></div> 
     <div id="gewinn_form"> 
      <form id="gewinnspiel" name="gewinnspiel" method="post" action="<?=$_SERVER[PHP_SELF]; ?>"> 
       <div id="input_box"> 
        <div><input type="radio" name="frage1" value="Kamille" /><span>Kamille</span></div> 
        <div><input type="radio" name="frage1" value="Kaktus" /><span>Kaktus</span></div> 
        <div><input type="radio" name="frage1" value="Krokus" /><span>Krokus</span></div> 

       </div> 
       <div id="submit_box"><a id="toggle_1" class="frage">nächste Frage...</a></div> 

     </div> 
     <div id="gewinn_werbung"></div> 
    </div> 
</div> 

回答

1

如果我理解這個例子,你有一堆ID爲page_1,page_2等的div。在每個div中都有一個ID爲「submit_box」的div。當你寫$('submit_box').getElements('a')時,它只會將事件添加到第一個div,因爲id必須是唯一的。你不能有更多的一個元素在頁面中有一個唯一的ID。因此,爲了讓您的示例工作將id更改爲classname並使用$$('div.submit_box a')。

0

在網頁上使用ID's多次毀了代碼! 修好後,它工作正常

+0

這裏有一個更好的寫作方式。請製作一個jsfiddle(jsfiddle.net),也許有人可以幫助你正確引導你。 – 2010-08-05 06:27:15