gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:09:27 26 4
gpt4 key购买 nike

几个小时以来,我一直在努力研究一个简单的 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);

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

关于javascript - jQuery 事件触发一次,然后再也不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com