繁体   English   中英

通过链接jQuery将函数作为参数传递

[英]Passing function as parameter via link jQuery

我有一个jQuery代码:

$('a[name=dialog]').click(function(e) {          
    var param = $(this).attr("name");       
    var param = replaceAll(param,"'","\"");     
    var data = JSON.parse(param);
    $("dialogTitle").text(data.caption);
    $("dialogBody").text(data.bodyText);
 /* here I'm trying to assign event to button*/
   $("#OkButton").click(window[data.myFunc]);   
});
});

在html代码中:

<ul>
<li><a href="#dialogConfirmation" name="{'caption':'MyCaption', 'bodyText':'BODY TEXT!!!', 'myFunc':'foo'}">link</a></li>
</ul>
<script>
function foo(){
alert('test');
};

我的问题是如何通过JSON传递函数作为参数? 可能吗? 有人知道其他解决方案吗? 特别注意以参数为参数的传递函数。 谢谢!

正如JohnP所说,使用数据API似乎更合适。 您需要以单独的方式定义函数名称和参数,可能使用不同的数据键。

使用数据API的精简示例:

HTML:

<a href='#' data-fn='foo' data-params='{"john":"doe"}'>link</a>​

JS / jQuery:

// define the function
window.foo = function(params) {
    console.log(params); // the params object
};
$('a').click(function() {

    // grab the function name and params from data
    var fn = $(this).data('fn'),
        params = $(this).data('params');

    // execute
    if ( typeof window[fn] == 'function' ) {
        window[fn](params);
    }
});​

小提琴: http : //jsfiddle.net/jzRPa/

使用jquery的数据API而不是使用name属性存储JSON会更好。

您不能将函数作为参数传递给JSON,因为它只是文本,但是您可以传递函数名然后调用它。 您只需要确保window[data.myFunc]是实际功能即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM