在ajax响应之后找到html代码

时间:2012-07-19 07:16:36

标签: jquery html ajax

Java脚本代码

$("#category select").change(function(){
    var category = $('select option:selected').html();

    $.ajax({
        type:"Post",
        url:"collectiepost.php",
        data:"category="+category,
        cache:"false",
        success:function(html){

    $("select").html(html).find("option .category");

        }

        });
    });
}); 

该页面上的html输出collectiepost.php

<select id="ontwerper">
  <option class="desinger">vikas</option>
</select>
<select id="category">
 <option class="category">cloth1</option>
 <option class="category">cloth2</option>
</select>

我想只提取html的那部分

需要输出

  <select>
  <option class="category">cloth1</option>
  <option class="category">cloth2</option>
  </select>

问题

但是我的代码显示了所有选项标签

  <select>
  <option class="desinger">vikas</option>
  <option class="category">cloth1</option>
  <option class="category">cloth2</option>
  </select>

3 个答案:

答案 0 :(得分:2)

这一行:

$("select").html(html).find("option .category");

select元素的内容设置为html,然后调用find,但不对结果执行任何操作。在将其添加到DOM之前,您需要减少AJAX调用返回的HTML片段:

$("select").html($(html).find("option.category"));

这是一个working example。请注意,option.category之间存在无空格。您当前的选择器将匹配.category元素后代option元素。

答案 1 :(得分:1)

$("select").html(html).find("option:not(.category)").remove();

而不是

$("select").html(html).find("option .category");

答案 2 :(得分:1)

您可以查询数据,只需执行

即可
$("select").html($("option.category", html));

找到选择框,从ajax html插入“option.category”的匹配。