从jquery函数中获取值并在其他脚本中使用它

Get value from jquery function and use it in other script

本文关键字:脚本 其他 jquery 函数 获取      更新时间:2023-09-26

我制作这个函数是为了获取"select_sport"的值,我试图返回,但我不知道如何获取该值以在另一个脚本中使用它。

这是我的职能

 var selectSport_form = {
    urlSelect : CI_ROOT + 'search_sport',
    run : function() {
        selectSport_form.select_sport();
    },
    select_sport : function() {
        $(document).on('click', '#horiz_container img', function () {
                var img_selected = $(this), $li = img_selected.closest('li');
                var value_sport = $(this).attr('id');
                var $selected = $('#horiz_container .selected').removeClass('selected');
                $selected.find('.selected_sport').remove();
                $li.addClass('selected');
                $li.prepend('<div class="selected_sport"><img src="' + CI_ROOT + 'resources/img/select.png"></div>');
                return value_sport;
        });
}
};

我试图这样称呼它,但不起作用

    $(function(){
      selectSport_form.run();
      if(selectSport_form.select_sport() != "") {
        alert('Work');
      }
    });
不能将

值从事件处理程序返回到设置事件处理程序的函数。该函数将在事件发生之前很久就完成运行。

您必须使用回调。这是从 ajax 获取值的更一般情况(其中有问题的事件处理程序是在收到 HTTP 响应时触发的事件处理程序)。

根据您真正想要做的事情,您有两种选择:

  1. 您可以从单击处理程序中获取代码并将其放入独立函数中,然后可以随时调用该函数以查看它计算的值是什么。

  2. 您可以将单击处理程序中的值存储在适当范围的变量中,然后稍后可以从适当范围内的任何其他 JavaScript 引用该变量。 如果作用域是全局或全局可访问的,则所有函数都可以访问它。

您可能已经发现,从事件处理程序返回值在这里对您没有帮助。

下面是选项 #2 的示例:

var selectSport_form = {
    urlSelect : CI_ROOT + 'search_sport',
    run : function() {
        selectSport_form.select_sport();
    },
    select_sport : function() {
        $(document).on('click', '#horiz_container img', function () {
                var img_selected = $(this), $li = img_selected.closest('li');
                var value_sport = $(this).attr('id');
                var $selected = $('#horiz_container .selected').removeClass('selected');
                $selected.find('.selected_sport').remove();
                $li.addClass('selected');
                $li.prepend('<div class="selected_sport"><img src="' + CI_ROOT + 'resources/img/select.png"></div>');
                // save the ID value of this click for future reference
                selectSport_form.lastClickValue = value_sport;
        });
    }
};

然后,在代码中的其他位置,可以检查 selectSport_form.lastClickValue 的值。

if (selectSport_form.lastClickValue == "something") {
    // do something
}
如果你

console.log(selectSport_form.select_sport());,你会看到你的select_sport()没有返回任何内容,它是未定义的。 您希望此函数做什么?它不会返回您在其中定义的点击事件。