从jquery函数中获取值并在其他脚本中使用它
Get value from jquery function and use it in other script
我制作这个函数是为了获取"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 响应时触发的事件处理程序)。
根据您真正想要做的事情,您有两种选择:
-
您可以从单击处理程序中获取代码并将其放入独立函数中,然后可以随时调用该函数以查看它计算的值是什么。
-
您可以将单击处理程序中的值存储在适当范围的变量中,然后稍后可以从适当范围内的任何其他 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()
没有返回任何内容,它是未定义的。 您希望此函数做什么?它不会返回您在其中定义的点击事件。
相关文章:
- java脚本在Chrome和其他浏览器中对LocaleTimeString的不同行为
- 网页上失败的javascript会导致所有其他脚本失败
- 在BoilerplateJS浏览器加载所有脚本(在其他模块中),而不考虑激活的模块
- 如果其他是咖啡脚本
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- Selenium异步脚本在自己的线程中阻塞其他脚本
- 编写脚本以关闭其他选项卡或浏览器
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- 如何测试jQuery和某些其他脚本是否已加载
- 不要为机器人(谷歌和其他)加载JS脚本以获得更好的性能
- 如何在访问其他url时在nodewebkit中注入脚本
- JS脚本由1个元素调用,而不是由其他3个元素调用
- 长轮询脚本会停止所有其他脚本
- 我用脚本创建了一个按钮.我可以通过点击按钮调用其他函数吗?我这样做,但失败了
- 在ASP中调用HTML以调用其他脚本
- 如果其他脚本'装载顺序未知
- 有没有一个简单的脚本可以向美国/加拿大游客显示脚本1,向其他游客显示脚本2
- Pjax.页面上的其他JS脚本不会;不起作用
- jquery破坏了其他脚本
- Meteor脚本确保在其他一切之前执行(在客户端上)