首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery事件只触发一次,然后就不再发生了。

jQuery事件只触发一次,然后就不再发生了。
EN

Stack Overflow用户
提问于 2014-12-05 01:13:28
回答 1查看 450关注 0票数 1

我与一个简单的JQuery事件处理程序搏斗了几个小时。我的事件处理程序只在页面加载时触发一次,无论事件或与复选框的交互,都不会再次触发。当延迟时,警报(当我有一个)显示第一个select选项。如果没有,则警报为空白。

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

HTML:

代码语言:javascript
运行
复制
<select id="connection" name="Connection"></select>
<div id="testme" style="background: #CCC; width:100%; height:50px;position:relative;color:red">testing</div>

Javascript:

代码语言: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的内部和外部,等等。例如:

代码语言:javascript
运行
复制
$connectionSelect.selectmenu({
    change: function (event, data) {
        $('#connection').change(function () {
            var str = "";
            $('#connection').each(function () {
                str += $(this).text() + "<br>";
            });
            $("#testme").text(str);
        });
    }
});

我通常编写后端代码,并且只熟悉JQuery的部分内容,这让我抓狂。我看过30多个相关的问题。

任何想法都会受到赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 01:16:18

而不是

代码语言:javascript
运行
复制
$("#connection").on("change", connectionSelected());

试一试

代码语言:javascript
运行
复制
$("#connection").on("change", connectionSelected);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27307212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档