没有调用两个jQuery / JavaScript函数

时间:2014-10-28 15:47:22

标签: javascript jquery asp.net-mvc

我有一个工作的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));

            }

2 个答案:

答案 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)

使用此:

$("#up").on("click", MoveDown);

更多详情here: