Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件触发一次,然后再也不会触发_Javascript_Jquery_Javascript Events_Asp.net Mvc 5 - Fatal编程技术网

Javascript jQuery事件触发一次,然后再也不会触发

Javascript jQuery事件触发一次,然后再也不会触发,javascript,jquery,javascript-events,asp.net-mvc-5,Javascript,Jquery,Javascript Events,Asp.net Mvc 5,几个小时以来,我一直在与一个简单的JQuery事件处理程序进行斗争。 我的事件处理程序在页面加载时只触发一次,无论是事件还是与选择框的交互,都不会再次触发。 延迟时,当我有一个警报时会显示第一个选择选项。否则,警报为空 我只想让选择框从AJAX加载,让用户选择触发另一个AJAX调用 HTML: Javascript: $(document).ready(function () { // Event handler. Tried as a separate function and as

几个小时以来,我一直在与一个简单的JQuery事件处理程序进行斗争。 我的事件处理程序在页面加载时只触发一次,无论是事件还是与选择框的交互,都不会再次触发。 延迟时,当我有一个警报时会显示第一个选择选项。否则,警报为空

我只想让选择框从AJAX加载,让用户选择触发另一个AJAX调用

HTML:

Javascript:

$(document).ready(function () {
    // Event handler. Tried as a separate function and as a parameter to $.on(...)
    function connectionSelected() {
        var str = $('#connection option:selected').text();
        alert(str);
        $("#testme").text(str);
    }

    var $connectionSelect = $('#connection');
    //$connectionSelect.selectmenu(); // Tried enabling/disabling

    // Tried this and all JS code inside and outside of $(document).ready(...)
    $.when(
    $.ajax({
        dataType: "JSON",
        url: '@Url.Content("~/API/ConnectionHint")', // The AJAX call (using ASP Razor) works fine
        success: function(data) {
            // This function is always called and works
            var items = [];
            $.each(data, function(key, val) {
                items.push("<option value='" + key + "'>" + val + "</option>");
            });
            $connectionSelect.append(items.join(""));
            // Tried setting up the event handler here
        },
        error: function() {
            $connectionSelect.html('<option id="-1">none available</option>');
        }
    })
    ).then(function() {
        //$("#connection option").blur(connectionSelected()).change();
        $("#connection").on("change", connectionSelected());
    });
});
尝试了事件处理程序的几十种变体,几个事件,在deferred.done和deferred.then的内部和外部,等等。。例如:

$connectionSelect.selectmenu({
    change: function (event, data) {
        $('#connection').change(function () {
            var str = "";
            $('#connection').each(function () {
                str += $(this).text() + "<br>";
            });
            $("#testme").text(str);
        });
    }
});
我通常编写后端代码,只熟悉JQuery的一部分,这让我抓狂。我在某某和其他地方查阅了30多个相关问题,例如:

欢迎提出任何意见。

代替

$("#connection").on("change", connectionSelected());
试一试


请注意,在第二个示例中,我通过引用传递函数处理程序,而不是调用它。

No.Way。这就解决了问题。有趣的是,在我的try random crap故障排除阶段,s是十几个变体中的一个,但是缺少无关的变体有一个单独的、不相关的问题,我显然同时修复了这个问题。不确定是笑还是哭。谢谢在JavaScript中,必须始终通过引用传递回调函数。请记住:
$("#connection").on("change", connectionSelected());
$("#connection").on("change", connectionSelected);