2014-05-25 106 views
0

好的,所有其他功能我都以同樣的方式完成了工作。這其中無論出於何種原因不會幹活不知道如果有什麼我「米失蹤,或者也許在前面的代碼中潛在的錯誤可能會導致這下面是我的代碼:JQuery在選擇框更改時發出警告

jQuery("#teamTab_addPlayerForm").on('change', 'select#teamTab_suggestedPlayer', function(e) { 
    e.preventDefault(); 
    alert('It Worked'); 

}); 

這裏是調用它的PHP文件:

$output .= '<div id="ld_addPlayerFunction" style="clear:both; width:100%;"><h3>Add Player</h3>'; 
     $standins = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'kdc_user_sync ORDER BY computedMMR ASC'); 
     $output .= '<form id="teamTab_addPlayerForm" action="" method="POST"> 
      <select id="teamTab_suggestedPlayer" name="suggestedPlayer"> 
       <option value="base">Suggested Player</option>'; 
      foreach($standins as $standin){ 
       $playerID = $wpdb->get_var('SELECT ID FROM ' . $wpdb->prefix . 'leagueDesigner_players WHERE userID = ' . $standin->userID); 
       $test = true; 
       if($playerID != ''){ 
        $leagueTest = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'leagueDesigner_league_players WHERE playerID = ' . $playerID); 
        foreach($leagueTest as $test){ 
         if ($test->leagueID == $leagueID){ 
          $test = false; 
         } 
        } 
       } 
       if($standin->computedMMR < ($suggestedMMR + 100) && $standin->computedMMR > ($suggestedMMR -100) && $test == true){ 
        $output .= '<option value="' . $standin->userID . '">' . substr($standin->profileName, 0, 20) . ' - ' . $standin->computedMMR . ' MMR</option>'; 
       } 
      } 

     $output .= '</select><br />'; 
     $output .= '</form>'; 

輸出隨後在腳本隨聲附和所以一個用戶告訴我使用的文件,而不是#teamTab_addPlayerForm和它的作品,但我不知道爲什麼這個以前代碼工作正常,並沒有:

jQuery("#teamTab_teamListForm").on('change', 'select#teamTab_teamSelect', function (e) { 
    e.preventDefault(); 
    jQuery(this).attr('disabled', true); 
    var teamID = jQuery(this).val(); 
    jQuery('select#teamTab_leagueSelect').attr('disabled', true); 
    var leagueID = jQuery('select#teamTab_leagueSelect').val(); 
    data = { action: "leagueDesignerTeamsTabLoadTeamPlayers", leagueID: leagueID, teamID: teamID }; 
     jQuery.ajax({ 
      type: 'POST', url: ajaxurl, data: data, dataType: 'html', success: function(response) { 
       if (response == "error") { 
        jQuery('select#teamTab_teamSelect').attr('disabled', false); 
        alert('There was an error processing your request'); 
       } 
       else { 
        jQuery('select#teamTab_teamSelect').attr('disabled', false); 
        jQuery('select#teamTab_leagueSelect').attr('disabled', false); 
        jQuery('.ld_teamEdit').remove(); 
        jQuery('#ld_addPlayerFunction').remove(); 
        jQuery('div#ld_teamTabTeamInfo').remove(); 
        jQuery('#teamTab_teamListForm').after(response); 
       } 
       }}); 
}); 

這是以相同的方式處理選擇框的代碼。這裏是PHP代碼:

function leagueDesignerTeamsTabLoadLeagueTeams() { 
global $wpdb; 
$leagueID = $_POST['leagueID']; //Pull the POST'd leagueID 
$output = '<select id="teamTab_teamSelect" name="team"><option value="">Choose a Team</option>'; //Output... 
$errors = 0; //Error checking... 
$teams = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'leagueDesigner_teams WHERE leagueID = ' . $leagueID); 
foreach($teams as $team){ 
    $output .= '<option value="' . $team->teamID . '"'; 
    if ($_POST['team'] == $team->teamID){ 
     $output .= ' selected'; 
    } 
    $output .= '>' . $team->teamID . '. ' . $team->teamName . '</option>'; 
} 
if (!$teams) { 
    $errors++; 
} 
$output .= '</select>'; 
if ($errors == 0) { echo $output; } else { echo 'error'; } 
die(); // this is required to return a proper result 

}

+0

要綁定'change'事件添加到一個不存在的元素'#teamTab_addPlayerForm'中,後者包含在DOM中。所以你應該綁定到已經在DOM中的更多的父元素,或者只是執行'$(document).on ...'。 –

+0

在瀏覽器控制檯中拋出任何錯誤?運行代碼時是否存在元素? – charlietfl

+0

@Rahil Wazir那麼工作,但直接在我剛剛展示給你的那個jQuery語句調用了一些非常相似的東西我正在編輯我的問題以顯示以前的代碼。 – Nash

回答

0

,所以你需要將其綁定到一個已經存在的元素的元素在頁面加載後創建(見下文)

$(document).on('change', '.class-name', function() { 
    //Commands to run on change 
});