如何将对象值名称传递给Jquery中的函数

时间:2015-06-09 18:30:42

标签: javascript jquery freemarker simplemodal

我正在使用JQuery Simple模式插件,我希望在点击链接到我的Jquery函数时传递一个Freemarker变量/对象。

作为测试,我创建了一个警告框,以查看该值是否正在传递,但似乎无效。

$(function() {

    // Load dialog on page load
    //$('#basic-modal-content').modal();

    // Load dialog on click
    $('#hey').click(function myName(uid) {
        var x = uid;
        alert(uid);

        return false;
    });
});

HTML

<div id="disclaimer${item.uid}">
    Modal data
</div>

<a onclick="myName('${item.uid}')" id="hey">Read the blog</a>

警报框只是一个空白对象。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

首先,你看起来好像混淆了html onclick属性和jquery .click方法。

    <a onclick="myName('${item.uid}')" id="hey">Read the blog</a>

这将调用名为“myName”的javascript函数,并将其传递给字符串$ {item.uid}。请注意,这是字符串,因为您将其包装在单引号中。如果您发出提醒,您的提醒将直接说“$ {item.uid}”。

然后你有一个点击的jquery绑定事件:

    $('#hey').click({....

好的,你需要选一个。使用onclick调用javascript函数或使用bind click事件。这两种方法都可以工作(我更喜欢自己的javascript onclick功能,但这只是意见)。

如果要使用jQuery绑定,请调试器;在它中划线,以便您可以轻松地通过它观察。我通常使用e作为我的事件变量,e.target获取事件的目标。它看起来像这样:

    $('#hey').click(function(e){
      debugger;
      alert($(e.target).attr('data-uid'));
    });

---编辑--- 在这里添加我的笔记,这样更容易阅读。

我喜欢在onclick函数中做的一件事就是传递this指针。如果您有多个同一类型的节点调用相同的函数,这将特别有用。

    <a onclick="myName(this)" id="hey2">Read the blog</a> 
    <a onclick="myName(this)" id="hey3">Read the blog</a>

然后,在你的函数javascript中看起来像:

    function myName(ptr) 
    {
        $(ptr).....
        // do some stuff 

    } 

答案 1 :(得分:1)

尝试使用:

function myName(uid){
  alert(uid);
}

您不需要将其包装在jquery事件处理程序中,因为您已经将其称为来自Freemarker模板的onclick事件。

或者,您可以这样做:

<a data-uid="${item.uid}" id="hey">...</a>

让你的javascript像这样:

$('#hey').click(function(){
  alert($(this).data('uid'));
}