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

查尔斯·伯恩斯

我一直在与一个简单的JQuery事件处理程序搏斗数小时。页面加载时,我的事件处理程序仅触发一次,无论事件或与选择框的交互如何,都不会触发。延迟后,警报(如果有)将显示第一个选择选项。否则,警报为空白。

我想要的只是从AJAX加载选择框,以及让用户选择触发另一个AJAX调用。

HTML:

<select id="connection" name="Connection"></select>
<div id="testme" style="background: #CCC; width:100%; height:50px;position:relative;color:red">testing</div>

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的某些部分,这使我发疯。我在SO和其他地方查看了30多个相关问题,例如

任何想法表示赞赏。

保罗

代替

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

尝试

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

请注意,在第二篇文章中,我通过引用传递了函数处理程序,而不是调用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么事件不会再触发一次呢?

来自分类Dev

为什么事件不会再触发一次呢?

来自分类Dev

当我触发事件时,它会触发几次,而不是在jQuery中触发一次

来自分类Dev

组件onload不再触发

来自分类Dev

jQuery .change()事件仅触发一次

来自分类Dev

更改事件处理程序仅触发一次,jQuery

来自分类Dev

仅触发一次jQuery滚动事件

来自分类Dev

仅触发一次jQuery mousemove事件

来自分类Dev

jQuery Bootstrap Datepicker Click事件仅触发一次

来自分类Dev

更改事件处理程序仅触发一次,jQuery

来自分类Dev

仅触发一次jQuery滚动事件

来自分类Dev

jQuery Mobile vclick事件仅触发一次

来自分类Dev

jQuery animate仅通过keypress事件触发一次

来自分类Dev

单击事件仅触发一次JQuery / bPopup

来自分类Dev

jQuery 单击事件仅触发一次

来自分类Dev

JQuery 监听多个事件,但只触发一次

来自分类Dev

事件多快触发一次?

来自分类Dev

“ onclick”事件仅触发一次

来自分类Dev

单击一次事件多次触发

来自分类Dev

拖动事件仅触发一次

来自分类Dev

C++ 触发一次事件

来自分类Dev

仅触发一次jQuery函数?

来自分类Dev

jQuery bind()仅触发一次

来自分类Dev

jQuery使用keydown / keyup / keypress事件仅触发一次,而不是按住键时触发多次

来自分类Dev

第二次使用输入文件不再触发onchange

来自分类Dev

jQuery的One-用多种事件类型触发一次

来自分类Dev

使用jQuery添加/删除类事件在Firefox中触发一次CSS3动画

来自分类Dev

jQuery Ajax只需单击一次即可触发2个事件

来自分类Dev

带有动画文本的.fadeToggle上的jQuery .click事件仅触发一次