我使用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');
}
});
答案 0 :(得分:2)
您无法将事件处理程序中的值返回到设置事件处理程序的函数。该事件在事件发生之前很久就已经完成了。
您必须使用回调。这是getting the value from ajax的更一般情况(其中所讨论的事件处理程序是在收到HTTP响应时触发的事件处理程序)。
答案 1 :(得分:1)
根据您真正想要做的事情,您有两种选择:
您可以从点击处理程序中获取代码并将其置于独立函数中,然后您可以随时调用它以查看其计算的值。
您可以将点击处理程序中的值存储在适当范围的变量中,然后您可以在稍后从任何其他适当范围的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
}
答案 2 :(得分:1)
如果你console.log(selectSport_form.select_sport());
你会发现你的select_sport()
没有返回任何内容,那么它是未定义的。你想要这个功能做什么?它不会返回您在其中定义的click事件。