2013-03-15 52 views
0

問候。

<?php foreach ($elements as $element){ ?> 
    var element_id = <?= json_encode($element['element_id']));?>; 

    $('#'+element_id+'_button').click(function() { 
     $('#'+element_id+'_interval').toggle(); 
     if ($(this).hasClass('active')){ 
      $(this).removeClass('active'); 
     } 
     else{ 
      $(this).addClass('active'); 
     } 
    }); 
    <?php }?> 

的問題是,當$('#'+element_id+'_interval').toggle();元素沒有響應,但它增加和刪除正確的類,有人幫助: 我使用一個PHP循環這樣產生。點擊事件對我的表的每一個元素我請。

+2

Woooo花花公子!用Javascript混合PHP?這是新的! :D你不能那樣做! – Alvaro 2013-03-15 17:11:58

+4

@Steve當然可以。 – 2013-03-15 17:12:30

+0

PHP確實與此無關。請發佈呈現的HTML。 – j08691 2013-03-15 17:13:15

回答

0

我會建議你首先將你的php從你的javascript中分離出來。
否則(在其他之間)將難以維護。

作爲開始,你可以做循環使用JavaScript

+0

我有352個元素到目前爲止,並將變得更大,我需要這樣做一個PHP循環。 – 2013-03-15 17:18:10

+0

其實你應該不需要循環,看看@cernunnos回答 – 2013-03-15 17:20:10

3

使用一個類,讓你的代碼會更加清晰,但如果你必須這樣做,這樣你應該知道,你的element_id變量不斷被改寫。

試着這麼做:

<button class="toggler" data-target="#interval_1"></button> 

$(".toggler").click(function (ev) { 
    ev.preventDefault(); 
    var target = $(this).data("target"); // would return #interval_1 
    $(target).toggle(); 

    if ($(this).hasClass('active')) { 
     $(this).removeClass('active'); 
    } else { 
     $(this).addClass('active'); 
    } 
}); 
0

將結合事件成爲一個單獨的方法,並調用該方法在您的document.ready腳本:

$(document).ready(function() { 
     bindBtns(); 
}); 

function bindBtns() 
{ 
    <?php foreach ($elements as $element){ ?> 
    var element_id = <?= json_encode($element['element_id']));?>; 

    $('#'+element_id+'_button').click(function() { 
     $('#'+element_id+'_interval').toggle(); 
     if ($(this).hasClass('active')){ 
      $(this).removeClass('active'); 
     } 
     else{ 
      $(this).addClass('active'); 
     } 
    }); 
    <?php }?> 
} 
+0

我有我的循環.ready()工作正常,.click爲每個元素分開執行,但不會切換,如果這是一個詞 – 2013-03-15 17:24:21

+0

你能發表嗎?包括您要切換的對象的2-3個按鈕的html輸出 – JB13 2013-03-19 14:21:35

相關問題