Jquery代码获胜'不是从页脚加载运行,而是从控制台运行

Jquery code won't run loaded from footer, but run from console

本文关键字:运行 代码 加载 控制台 Jquery 获胜      更新时间:2023-09-26

我正在尝试获取一个值并将其传递给隐藏的输入,以便通过$_POST发送表单数据。我有一个下拉按钮和以下代码,以便在用户选择选项时更新值:

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/

编辑以包含完整代码:

( 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);
    });
});

好吧,代码很好,问题是引导选择正在使用目标button[data-id="select-especialidad"],即使引导选择在我的代码之前加载,处理信息也需要几秒钟(或至少一点)。

因此,应该在检查事件是否已加载的函数之后包装代码。这是最后一个代码:

$('#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 here有关引导程序选择事件的更多信息。