我有一个工作的MVC应用程序,它包含两个列表框和按钮,用于列表集的各种内容。除了从未调用的MoveUp和MoveDown(设置断点)之外,以下脚本中的所有jQuery函数都能正确执行。 F12控制台很干净,没有JavaScript错误。有问题的两个按钮是:
<button type="button" id="up" onclick="MoveUp()">Up</button>
<button type="button" id="down" onclick="MoveDown()">Down</button>
jQuery代码如下。 MoveUp和MoveDown函数是否需要位于&#34; global&#34;功能
<script src="~/Scripts/jquery-2.1.1.js"></script>
<script>
$(function () {
$("#add").click(function () {
$("#listBoxAvail > option:selected").each(function () {
$(this).remove();
val = $(this).val();
temp = $(this);
temp.val('L' + val)
$(temp).appendTo("#listBoxSel");
});
});
$("#remove").click(function () {
$("#listBoxSel > option:selected").each(function () {
$(this).remove().appendTo("#listBoxAvail");
});
});
$("#remove-all").on("click", function(event) {
$('#listBoxSel option').prop('selected', true);
$("#remove").trigger("click");
});
$("#select-all").on("click", function(event) {
$('#listBoxAvail option').prop('selected', true);
$("#add").trigger("click");
});
});
function MoveDown() {
var selectedOption = $('#listBoxSel > option[selected]');
var nextOption = $('#lstBoxSel > option[selected]').next("option");
if ($(nextOption).text() != "") {
$(selectedOption).remove();
$(nextOption).after($(selectedOption));
}
}
function MoveUp() {
var selectedOption = $('#lstBoxSel > option[selected]');
var prevOption = $('#lstBoxSel > option[selected]').prev("option");
if ($(prevOption).text() != "") {
$(selectedOption).remove();
$(prevOption).before($(selectedOption));
}
答案 0 :(得分:2)
您说&#34; MoveUp和MoveDown永远不会被调用&#34; ,但&#34;控制台是干净的,没有JavaScript错误。&#34; 这意味着正在调用函数,否则,您会看到错误undefined is not a function
。
因此,有了这些信息,我们可以猜出错误在您的函数中。由于你使用jQuery,当jQuery对象为空时,它将无声地失败(没有错误)。
我无法访问您的HTML,因此我只是在猜测,但您使用的是select元素并使用此选择器option[selected]
。您可能正在尝试获取所选元素,但此不能执行您想要的操作。它选择具有属性option
的{{1}}。您的HTML可能没有。
您要使用的是selected
:它将获得所选的选项。使用:
:selected
答案 1 :(得分:0)