如何在ajax中使用ajax链接返回HTML不显眼

时间:2009-10-28 16:49:45

标签: jquery unobtrusive-javascript

我有一个页面,上面有ajax URL,当然这个页面正在应用不引人注目的javascript,让我们称之为A页。

<div id="pageA">
    <a href="additem?id=1>Add this item</a>
</div>
<div id="items"></div>

当我点击该URL页面B时,返回一个div,其中包含一个假定为ajax链接的URL。 回报是这样的:

<div class="item">This is 1 item <a href="delete?id=3">Delete this</a><div>

所以页面最终将如下所示:

<div id="pageA">
    <a href="additem?id=1>Add this item</a>
</div>
<div id="items">
    <div class="item">This is 1 item <a href="delete?id=3">Delete this</a><div>
</div>

返回的HTML中的删除链接标记假设像additem链接一样运行。但我不知道如何使这项工作。

有什么方法可以保持这种不引人注目的行为吗?

非常感谢你:)

PS:IM使用jquery

4 个答案:

答案 0 :(得分:1)

$("#pageA").click(function(e){
   e.stopPropagation();
   $("#items").append($("<div>").load( $(this).find("a").attr("href")));
});

答案 1 :(得分:1)

click的{​​{1}}处理程序中,当您调用pageA时,给它一个回调,然后在新加载的项目上使用load函数来设置他们的ajax功能。

答案 2 :(得分:1)

您可以让页面或Web服务返回您在父div中所期望的特定格式的数据:

<div id="items">
    <div class="item">This is 1 item <a href="delete?id=3">Delete this</a><div>
    ...
    ...
</div>

您使用的特定事物的响应(即文本/ html)将类似于

<div class="item">This is 1 item <a href="delete?id=3">Delete this</a><div>
...
...

然后您可以使用jQuery.load()来调用此页面...最终代码将如下所示:

$('#items').load('pathToMyWebService');

jQuery.load()返回一个jQuery对象,所以你也可以运行你的选择器...所以让你要实现的解决方案是一个完整的html页面,你生成的数据就在里面一个名为结果的div ;你可以用这种方式获取结果......

$('#items').load('pathToMyWebPage #results div');

要正确实施,请查看文档:{​​{3}}

答案 3 :(得分:1)

http://plugins.jquery.com/project/livequery/

为了简化起见,我们可以使用它。一个电话

$('.item-control').livequery('click', function(event) {
    var addlink = $(this);
    $('#form').ajaxSubmit({ url: addlink.attr('href'), success: function(d) { $("#parrentDIV").empty().append(d); } });
    return false;
});