jquery - 从函数内部调用函数

时间:2014-03-28 19:37:38

标签: jquery

我收到了以下代码:

function open_viewer() {
  $('.image_thumb').click(function(){
    var reqz = 'id='+$(this).attr('id')+'&i='+$(this).attr('i');
    $.ajax({
      type: 'POST',
      url: 'index.php?ind=work&op=get_images',
      data: reqz,
      success: function (data) {
        $('#viewer').remove();
        $('body').prepend(data);
        $('#viewer_close').click(function() {
          $('#viewer').remove();
        });
        $('.viewer_button').click(function() {
          var reqz = 'id='+$(this).attr('id')+'&i='+$(this).attr('i');
          $.ajax({
            type:'POST',
            url: 'index.php?ind=work&op=get_images',
            data: reqz,
            success: function (data) {
              $('#viewer').remove();
              $('body').prepend(data);
            }
          });
        });
      }
    });
  });
}

每次按.viewer_button时我都会尝试调用$ .ajax(),结果我将代码更改为以下内容:

function open_viewer() {
    var reqz = 'id='+$(this).attr('id')+'&i='+$(this).attr('i');
    $.ajax({
      type: 'POST',
      url: 'index.php?ind=work&op=get_images',
      data: reqz,
      success: function (data) {
        $('#viewer').remove();
        $('body').prepend(data);
        $('#viewer_close').click(function() {
          $('#viewer').remove();
        });
        $('.viewer_button').click(function() {
                      open_viewer();
        });
      }
    });
}

但是这会调用无限循环并且不起作用。也许有人可以指出我的解决方案?提前致谢

2 个答案:

答案 0 :(得分:0)

为什么使用功能?

您可以使用

$(document).ready(function() {
   $('.image_thumb').click(function(){

   });

    $('.viewer_button').click(function() {


    });
});

每次点击都会执行内部代码。

答案 1 :(得分:0)

使用delegation而不是在ajax成功回调中定义处理程序。

$(document).ready(function() {

    $("#parent").on("click", ".viewer_button", function(e) {
        ...
    });

});

对于#parent,您为最接近.viewer_button的静态父元素选择了一个选择器。