如何将附加的html绑定到jQuery?

时间:2010-09-10 17:28:53

标签: jquery

我正在加载HTML内容并将其附加到DIV。当然,问题在于HTML没有绑定。

由于我没有点击任何内容,我无法使用jQuery.livejQuery.bind(我认为)。

这是我的代码。

// Load directory content and display list
  function loadDirContent(current_path,new_dir)
  {  
    // Load new content in browser window
    jQuery.ajax({
        type: "POST",
        url: "../wp-content/plugins/wp-filebrowser/fileBrowser.php",
        dataType: 'html',
        data: {current_path: current_path, new_dir: new_dir},

        success: function(html){
                 jQuery("#fileBrowser").html(html); // Append new content
        }
    });  
  }

如何绑定这个新的HTML以便我可以在添加的内容上运行jQuery?

当我使用Ajax上传插件时,我遇到了问题。它从表单中获取数据,但任何$ _POST数据都留空。只有在使用我的loadDirContent函数“页面重新加载”后才会发生这种情况。

更新

我的表单中有以下输入:     relative_url; ?>“/> 每次我在文件浏览器中关闭一个目录时,current_path都会更新。

Ajax File Upload Plugin调用uploader.php函数。在uploader.php里面我有以下命令:$this->current_path = $_POST['current_path'];

问题是$_POST['current_path']为空。

2 个答案:

答案 0 :(得分:1)

$()。live和$()。delegate将处理除click之外的事件。你绑定处理程序的是什么事件?

此外,如果live / delegate确实不起作用,您总是可以在成功回调中绑定处理程序。


示例:

// function for doing event binding:
function bindHandlers(root) {
    // do any event binding here, only selecting elements within the provided root
    $('.something', root).click(...);
    $('.something-else', root).hover(..., ...);
};

// bind all children of the document on dom ready
$(function() { bindHandlers(document); });

// Load directory content and display list
function loadDirContent(current_path,new_dir)
{  
  // Load new content in browser window
  jQuery.ajax({
      type: "POST",
      url: "../wp-content/plugins/wp-filebrowser/fileBrowser.php",
      dataType: 'html',
      data: {current_path: current_path, new_dir: new_dir},

      success: function(html){
          // append the new stuff and attach handlers
          bindHandlers($('#fileBrowser').html(html));
      }
  });  
}

答案 1 :(得分:0)

您可能想查看我收到的解决方案in my recent, similar question。两者都是很好的答案(我标记了帮助我的那个)。从你正在做的事情来看,你可能希望在添加内容后为内容重新分配处理程序。