使用jQuery .remove和.replaceWith替换div内容

时间:2012-04-20 16:32:45

标签: jquery jquery-ui

单击链接时替换div的内容时遇到问题。我能够替换一次内容,但不能再次替换它。我想我无法掌握新div的id。

Take a look at my example

单击“显示组1”,然后显示组2.我可以替换它们但不能再次替换组1。刷新页面以再次查看该过程。

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您的问题在于replaceWith()您正在替换您正在使用的代码...

$j(".monitoringDesc").click(function(e) {
    e.preventDefault();
    $j(".widgetGroup").html($j("#newGroup").html());
    $j(".widgetGroup").show("slide", {
        direction: "right"
    }, 200);
});

这使得容器widgetGroup保持完好 - 只需使用.html()

替换内容

Here is an example of both working using this method

更新

你可以让你的代码和功能更加通用......首先在HTML中添加一些data

<li><a href="#" class="monitoringDesc" data-target="newGroup">Show group 1</a></li>
<li><a href="#" class="monitoringDesc" data-target="newGroup2">Show group 2</a></li>

我添加的是2 data-target属性 - 然后以下jQuery将根据上述数据提取您需要的内容

$j(".monitoringDesc").click(function(e) {
    e.preventDefault();
    $j(".widgetGroup").html($j("#"+$j(this).data('target')).html());
    $j(".widgetGroup").show("slide", {
        direction: "right"
    }, 200);
});

这使用.data()方法从上面的HTML中提取data-target属性。我还改变了锚的类以匹配 - 所以我们可以在两个上都听取click事件。

Working example of this solution here

答案 1 :(得分:0)

在这里,您可以找到更新的(工作)代码段: http://jsfiddle.net/qL6gB/6/

这是问题的核心:

$j(".widgetGroup").html($j("#newGroup").html());

使用它来更改div的内容

答案 2 :(得分:0)

根据themarcuz的回应,解决的问题确实是使用:

$('#divblockname').html(new content from partial view)

而不是

$('#divblockname').replaceWith(new content from partial view)

后者替换了ONCE中的内容然后停止了(不,我不知道为什么,我尝试将无缓存属性放在我的所有MVC操作上也无济于事。)

然而,立即使用.html(几个小时后)解决了这个问题。我认为其他人可能从中受益。