-1

javascript / jQuery是否可以在页面加载(或(文档).ready)时创建对象,然后稍后使用它们,例如在输入的keyup上。如果是这样,怎么做?

4

2 回答 2

1

如果你把所有代码都放进去,$(document).ready{all code here}那么你的变量就不会超出范围。

$(document).ready(function(){
  var someObject={};
  $("selector").click(function(e){
    console.log(someObject);
  });
});

如果您在 html 中使用 onclick,那么我建议您更改它并将所有 JS 代码移动到 JS 文件或<script>块(不在您的 html 中)。

您可以命名它而不是将许多变量放在全局范围内(如果您不能将所有代码放在 $(document).ready 中)。

var myApplication = myApplication || {};//if myApplication doesn't exist then create it
myApplication.someObject = {};

然后,即使您的 JS 分布在多个文件中,您仍然可以维护一个 myApplication 对象。

正如 gp 提到的那样;您可以使用 data 将数据添加到 html 元素:

$("#somebutton").on("click",function(e){
  $(this).data("someObject",{});// you can use e.target instead of this as well
});
于 2013-08-25T10:39:24.880 回答
0

下面找到一个示例用法。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    TODO write content
    <div id="MytextID">My text </div>
    <input type="text" id="inputId" name="name">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        var x = $('#MytextID');
        $('#inputId').keyup(function(){
            alert(x.text());
        })
    })

</script>
  </body>
</html>
于 2013-08-25T10:50:03.413 回答