函数不能作为另一个函数参数

时间:2014-09-11 13:51:01

标签: javascript jquery ajax jquery-ui

Failed Example

Original Example

有谁能告诉我如何将draggable函数作为clickit的参数传递,这是一个AJAX函数?我想传递draggable作为参数,将其附加到动态添加的元素。我无法让它定义可拖动函数并将其传递给clickit

function clickit(fun){
  $.ajax({
        'url' : "url",
        'dataType' : 'json',
        'success' : function(data){
         var item_html ="";
            $.each(data.query.results.json,function(i,k){
                item_html += '<div class="dialog"><h3>'+k+'</h3></div>'
            });           
            $('.area').html(item_html);
            fun;         
          }
   });   
}
$('button').click(function(){
    var funpara = $('.dialog').draggable();
    clickit(funpara)
});

这是有效的:

function clickit(){
  $.ajax({
        'url' : "url",
        'dataType' : 'json',
        'success' : function(data){
         var item_html ="";
            $.each(data.query.results.json,function(i,k){
                item_html += '<div class="dialog"><h3>'+k+'</h3></div>'
            });           
            $('.area').html(item_html);
            $('.dialog').draggable();         
          }
   });   
}

$('button').click(function(){
    clickit()
});

看起来参数fun无法传递给success函数。

1 个答案:

答案 0 :(得分:3)

您似乎想要调用fun,但目前您只是在没有调用()

的情况下引用它
function (data) {
    var item_html = "";
    $.each(data.query.results.json, function (i, k) {
        item_html += '<div class="dialog"><h3>' + k + '</h3></div>';
    });           
    $('.area').html(item_html);
    fun();         
}

在您的上下文中,您似乎想要调用$('.dialog').draggable(),因此fun应该更像这样

function fun(o) {
    return $('.dialog').draggable(o);
}