0

单击链接时,我在替换 div 的内容时遇到问题。我可以更换一次内容,但不能第二次更换。我认为我无法处理新 div 的 id。

看看我的例子

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

任何帮助表示赞赏。

4

3 回答 3

1

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

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

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

这是使用此方法工作的示例

更新

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

<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()方法data-target从上面的 HTML 中提取属性。我还更改了锚的类以匹配 - 所以我们可以在两者上收听点击事件。

此解决方案的工作示例在这里

于 2012-04-20T16:39:02.283 回答
0

在这里你会找到更新的(工作)片段:http: //jsfiddle.net/qL6gB/6/

这是问题的核心:

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

使用它来改变你的 div 的内容

于 2012-04-20T16:45:11.280 回答
0

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

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

代替

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

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

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

于 2013-06-14T14:17:54.327 回答