使用jquery ajax后如何使用选择器获取元素? $阿贾克斯()

时间:2012-02-24 01:13:39

标签: jquery

我想在调用$ .ajax()后得到一个带有ID的div元素 这是我的代码:

$.ajax({

  url: "PO_Header.php",
  data: "supplier="+selectedId,
  cache: false,
  success: function(html){
    $("#PO_Header").empty(); 

    $("#PO_Header").append(html);

  }
});

$("#PO_Header").append(html);将附加整个html页面,我想要的是获取具有特定id的元素。假设在PO_Header.php中,我的当前页面会注入一个带有id='mydiv'的div元素。

5 个答案:

答案 0 :(得分:5)

使用jQuery的加载:

$('#PO_Header').load('PO_Header.php #mydiv', { 'supplier': selectedId } );

它允许您加载页面片段。正如他们documentation所指出的那样:

  

加载页面片段   与$ .get()不同,.load()方法允许我们指定一部分   要插入的远程文档。这是   使用url参数的特殊语法实现。如果一个或多个   空格字符包含在字符串中,即字符串的一部分   在第一个空格后面假设是一个jQuery选择器   确定要加载的内容。

因此,它只会将PO_Header.php中的<div id="myDiv"></div>注入您的元素。

答案 1 :(得分:3)

您可以使用.load()

  

加载页面片段

     

$.get()不同, .load()方法允许我们指定要插入的远程文档的一部分。这是通过url参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则假定第一个空格后面的字符串部分是jQuery选择器,用于确定要加载的内容。

     

来源:http://api.jquery.com/load/

基本上你可以像这样使用它:

$('#PO_Header').load('PO_Header.php #mydiv', { 'supplier': selectedId } );

要禁用cache,您可以在代码的开头使用

$.ajaxSetup({
  cache: false
});

修改

.load() .get()大致相同,除了以下几个原因:

  1. .load()有一个隐式回调函数,可在成功响应时将返回的HTML内容设置为提供的元素。

  2. 它具有url参数的特殊语法,用于仅指定要插入的返回文档的确定部分。

  3. 默认方法为GET。除非将data参数作为对象传递,否则将使用POST方法。

答案 2 :(得分:2)

我更喜欢在外部函数中绑定到ajax加载的元素,并在我的success函数中调用它。

function binder(){
  $("#mydiv")....do something here
}

$.ajax({

  url: "PO_Header.php",
  data: "supplier="+selectedId,
  cache: false,
  success: function(html){
    $("#PO_Header").empty(); 

    $("#PO_Header").append(html);
    binder();

  }
});

答案 3 :(得分:1)

试试这个

$.ajax({

  url: "PO_Header.php",
  data: "supplier="+selectedId,
  cache: false,
  success: function(html){

    var new_html = $(html).find('#mydiv').html();

    $("#PO_Header").empty(); 

    $("#PO_Header").append(new_html);

  }
});

答案 4 :(得分:0)

我从CSS-Tricks中发现这个例子非常有帮助 -

http://css-tricks.com/ajax-load-container-contents/