是否可以从点击事件中返回值?

时间:2017-04-27 20:29:19

标签: javascript jquery function click return

这是我正在构建https://codepen.io/alexyap/pen/GmrgVL?editors=0010

的笔

我正在尝试从下拉列表中单击的每个选项返回值,以便我可以在最后一个框中添加所有这些值,但我不知道如何在click函数之外访问它们,如果可能的话。有人有什么建议吗?

var val1 = $("#box1 p:first-child").text()

$("#dropdown1 ul li").click(function(){
$("#box1 p:first-child").text($(this).text());
$("#box1 p:first-child").val($(this).text());


val1 = $("#box1 p:first-child").text();

})

2 个答案:

答案 0 :(得分:0)

您在帖子中包含的代码应该有效。每次点击dropdown1,都应该更改val1。但是,在您链接的笔中,您有:

  $("#dropdown1 ul li").click(function(){
    $("#box1 p:first-child").text($(this).text());
    $("#box1 p:first-child").val($(this).text());
    
    var val1 = $("#box1 p:first-child").text();
    
    //...
   
   }

var之前的val1会产生重大影响。如果没有var,该行将在全局命名空间中设置val1的值。但是对于var,该行在 function 命名空间中创建一个新变量;单击处理函数退出后,本地val1在未使用的情况下被销毁,然后在下一次单击时重新创建。但是如果没有var,您将始终在全局命名空间中更新val1,这就是您想要的。这是否能满足您的需求?

答案 1 :(得分:0)

你的意思是这样的吗?:

var val1;

$("#dropdown1 ul li").click(function(){
$("#box1 p:first-child").text($(this).text());
$("#box1 p:first-child").val($(this).text());


val1 = $("#box1 p:first-child").text();

});

因此,每当您单击所需的元素时,它将存储在GLOBAL(这是重要的)变量中,因此您可以在任何地方使用它的值。在你的笔中,我注意到你有一些分号问题。