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

时间:2013-09-12 14:20:45

标签: javascript jquery

我使用intection来实现此函数以获取“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');
      }
    });

3 个答案:

答案 0 :(得分:2)

您无法将事件处理程序中的值返回到设置事件处理程序的函数。该事件在事件发生之前很久就已经完成了。

您必须使用回调。这是getting the value from ajax的更一般情况(其中所讨论的事件处理程序是在收到HTTP响应时触发的事件处理程序)。

答案 1 :(得分:1)

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

  1. 您可以从点击处理程序中获取代码并将其置于独立函数中,然后您可以随时调用它以查看其计算的值。

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

  3. 正如您可能已经发现的那样,从事件处理程序返回一个值对您没有帮助。

    以下是选项#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
    }
    

答案 2 :(得分:1)

如果你console.log(selectSport_form.select_sport());你会发现你的select_sport()没有返回任何内容,那么它是未定义的。你想要这个功能做什么?它不会返回您在其中定义的click事件。