2014-07-05 77 views
0

我有一個頁面正在創建行,其中包括具有非順序ID的複選框。根據數據庫中的數據,有時需要在onload上檢查它們。 PHP正在循環數據,創建頁面。在jquery頁面沒有觸發

問題:我在循環內的jquery無法正常工作。它不檢查複選框或觸發更改事件。它也沒有顯示我在那裏的console.log。如果我檢查內聯複選框,那是工作,但它不會觸發更改事件,它必須正確地使頁面功能。

這裏的一些代碼:

<? foreach($weekly as $w){ ?> 

// create the row 

    <input type="checkbox" id="slW_4" name="slW_4" <? if($w['current_sl_id']){echo 'checked';} ?>> 

    <? if($w['current_sl_id']){ ?> 
    <script language="text/javascript"> 
     $(document).ready(function(){ 
     $('#slW_4').prop('checked', true); 
     console.log('should have checked the checkbox: '+ $('#slW_4').is(':checked')); 
     $('#slW_4').trigger("change"); 
     console.log('should have triggered change'); 
     }); 
    </script> 
    <? } ?> 

<? } ?> 
+0

您的doc.ready處理程序在循環內部=不正確 – adaam

+0

我強烈建議在該循環之外考慮您的JavaScript。最糟糕的情況是,你必須稍後在代碼中重新使用'$ weekly'。 –

+2

您也在每個循環上輸出相同的ID。 '$('#slW_4')'只會獲得具有該ID的第一個元素。 –

回答

0

我強烈建議在該循環之外考慮您的JavaScript。最糟糕的情況是,你必須在代碼中每週重新使用$。

0

你不必束縛聽變化事件和默認觸發change沒有做任何事情,以實際的複選框什麼。

你會需要像一個聽衆:

$('#slW_4').on('change', function (event) { 
    // ...do something here 
}); 

// Rest of your code underneath 

然後$('#slW_4').trigger("change");會觸發該功能

也無關,但在頂部,如果你調用$('#slW_4')了很多,我將它保存在像var $sl4 = $('#slW_4')這樣的變量中,並使用該變量,如$sl4.prop('checked', true)

+0

我認爲當你說*你正在調用[相同的id'd結果]很多*時,你就錯過了一個明顯的問題,但是不認識它是*一遍又一遍的相同的ID。 –