2016-04-15 72 views
0

我試圖獲取一個值並將它傳遞給隱藏的輸入以便通過$_POST發送表單數據。我有一個下拉按鈕,下面的代碼,以更新該值,當用戶選擇一個選項:jquery代碼不會從頁腳加載運行,而是從控制檯運行

jQuery(document).ready(function($) { 
    var espSeleccionada = $('button[data-id="select-especialidad"]'); 
    espSeleccionada.on("click", function() { 
     var x = $(this).text(); 
     $('#boton-prueba').text(x); 
    }); 
}); 

的代碼應該從一個按鈕傳遞值到另一個,如圖這裏的例子中,但是,當我從WordPress的頁眉/頁腳/主題加載代碼沒有任何反應。相反,當我在控制檯上寫它時,它工作正常。控制檯中沒有JS錯誤。

請注意,我正在使用.text()來測試代碼是否有效,但它在上線前會有.val()

這是按鈕HTML:

<button type="button" class="btn dropdown-toggle btn-default" data-toggle="dropdown" data-id="select-especialidad" title="Hacienda" aria-expanded="false"><span class="filter-option pull-left">Hacienda</span></button> 

下面是一個例子:https://fiddle.jshell.net/t9mvoxj5/

EDIT包括完整CODE:

(function($) { 
    var num_cols = 3, 
    container = $('#menu-preparadores-de-oposiciones-en'), 
    listItem = 'li', 
    listClass = 'sub-list'; 
    container.each(function() { 
     var items_per_col = new Array(), 
     items = $(this).find(listItem), 
     min_items_per_col = Math.floor(items.length/num_cols), 
     difference = items.length - (min_items_per_col * num_cols); 
     for (var i = 0; i < num_cols; i++) { 
      if (i < difference) { 
       items_per_col[i] = min_items_per_col + 1; 
      } else { 
       items_per_col[i] = min_items_per_col; 
      } 
     } 
     for (var i = 0; i < num_cols; i++) { 
      $(this).append($('<ul ></ul>').addClass(listClass)); 
      for (var j = 0; j < items_per_col[i]; j++) { 
       var pointer = 0; 
       for (var k = 0; k < i; k++) { 
        pointer += items_per_col[k]; 
       } 
       $(this).find('.' + listClass).last().append(items[j + pointer]); 
      } 
     } 
    }); 

    if ($("body").hasClass("page-id-64")) { 
     $('.tab-content').addClass('col-sm-9'); 
     $('#custom-tabs-0').tabCollapse(); 
    } 

}) (jQuery); 

jQuery(document).ready(function($) { 
    var espSeleccionada = $('button[data-id="select-especialidad"]'); 
    espSeleccionada.on("click", function() { 
     var x = $(this).text(); 
     $('#boton-prueba').text(x); 
    }); 
}); 
+0

第一行看起來不對我。它應該不是'''$(document).ready(function(){'''? –

+0

Hello @JamesMcCormac,在WordPress中是必需的:http://stackoverflow.com/questions/1327085/jquery-ready- function-doesnt-work-in-wordpress –

+0

啊,我的立場正確:)我沒有爲wordpress寫任何東西。 –

回答

0

那麼,該代碼是細,問題是目標button[data-id="select-especialidad"]正在使用引導選擇,即使引導選擇加載之前我的代碼,它需要幾秒鐘(或至少一點)噸o處理信息。

因此,代碼應該封裝在檢查事件已被加載的函數之後。這是最後的代碼:

$('#select-especialidad').on('loaded.bs.select', function (e) { 
    var y = $(this).val(); 
    $('#select-especialidad-hidden').val(y); 

    var espSeleccionada = $('button[data-id="select-especialidad"] > span.filter-option.pull-left'); 
     espSeleccionada.on("click", function() { 
      var x = $(this).text(); 
      $('#select-especialidad-hidden').val(x); 
     }); 
}); 

loaded.bs.select這裏更多信息的bootstrap-select事件。