单击链接时,我在替换 div 的内容时遇到问题。我可以更换一次内容,但不能第二次更换。我认为我无法处理新 div 的 id。
单击显示组 1,然后显示组 2。我可以同时替换它们,但不能再次替换组 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 中提取属性。我还更改了锚的类以匹配 - 所以我们可以在两者上收听点击事件。
在这里你会找到更新的(工作)片段:http: //jsfiddle.net/qL6gB/6/
这是问题的核心:
$j(".widgetGroup").html($j("#newGroup").html());
使用它来改变你的 div 的内容
根据 themarcuz 的回复,解决的问题确实是使用:
$('#divblockname').html(new content from partial view)
代替
$('#divblockname').replaceWith(new content from partial view)
后者一次替换了内容然后停止(不,我不知道为什么,我尝试在我的所有 MVC 操作上放置无缓存属性也无济于事)。
但是,使用 .html 立即(几个小时后)解决了这个问题。我认为其他人可能会从中受益。