【问题标题】:Pass initialized object to javascript function将初始化对象传递给 javascript 函数
【发布时间】:2013-09-14 18:53:38
【问题描述】:

我有如下初始化的对象,我想通过onclick函数传递这个对象,这可以实现吗?

var nameObject = { Name: "Stack", lastName:"Exchange" }

这是我的代码:

document ready 中,我有 linkonclick 函数,该函数附加到 html 元素中。

HTML:

<div id="test"></div>

Javascript:

$(document).ready(function () {
  var nameObject = { Name: "Stack", lastName:"Exchange" };

  $("#test").append('<a href="#"'
  +'onclick="sendObj(**I want to pass "nameObject" into this function)">'
  +'sendObject</a>');
)};

function sendObj(**receive the object**)
{
  //nameObject.Name+" "nameObject.lastName;
}

Jsfiddle

【问题讨论】:

  • “发送”是什么意思? nameObject 和 sendObj 在同一范围内,因此 sendObj 函数可以访问 nameObject 变量。
  • 你想达到什么目的?什么在你的小提琴中不起作用?
  • 这不起作用 -> jsfiddle.net/C6ghj/10

标签: javascript jquery html function object


【解决方案1】:

试试这个

$(document).ready(function () {
  var nameObject = { Name: "Stack", lastName:"Exchange" };

  $("#test").append('<a href="#" data-caller>sendObject</a>');

  $("#test").on("click", "[data-caller]", function() {
     sendObj(nameObject);
  });
)};

function sendObj(nameObject)
{
  alert(nameObject.Name+" "+nameObject.lastName);
}

working jsfiddle

【讨论】:

    【解决方案2】:

    做你想做的更合适的方法是将对象存储在元素的 data 对象中,这正是 jQuery 为此目的而指定的。

    然后,分配一个click 处理程序,该处理程序将使用存储的数据调用您想要的函数。

    $(document).ready(function () {
        var name = { Name: "Stack", lastName:"Exchange" };
        var a =  $('<a href="#">sendObject</a>').data('name', name).on('click',
           function(e){
               sendObj($(this).data('name'));
           });
    
        $("#test").append(a);
     });
    
    function sendObj(e)
    {
        console.log(e);
    }
    

    Demo(向控制台问好,抛弃alert())。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2017-05-13
      • 1970-01-01
      • 2011-12-07
      相关资源
      最近更新 更多