从局部视图内部修改主视图
modifying main view from inside partial view
我有一个主要观点,假设有以下内容:
<div id='test'>Some Text</div>
<div id='placeholder'></div>
然后使用 ajax,我将"占位符"的内容替换为如下所示的部分视图:
<div id='ajaxContent'>
// new content
</div>
<script>
$(document).ready(function() {
console.log($('#test').text());
$('#test').css('color','red');
});
</script>
所以在我的脚本中,我试图将div"test"中的文本颜色更改为红色,但我在控制台中一直得到"未定义"。如何通过 ajax 从进入主视图的部分视图访问主视图中的测试div?
如果它们最终在同一页面上,html元素不应该能够看到彼此吗?
你的 JavaScript 片段只是在调用html(...)
被 jQuery 删除。类似的问题可以在这里找到:jQuery .load()/.ajax() 在附加后没有在返回的 HTML 中执行 javascript
因此,您必须以这种方式插入部分数据(假设您在变量中result
部分响应):
$(result).find('#ajaxContent').appendTo('#placeholder');
$(result).find('script').appendTo('#placeholder');
另外,正如@RolandBertolom之前所说,在 JavaScript 中的部分响应中不需要 ready()。
您实际上不需要使用 $(document).ready
.只是没用。但它不应该破坏任何东西。以及您可以从插入同一文档中任何位置的脚本访问页面上的任何元素。所以问题超出了你的问题范围。
尝试:
- 从控制台运行
$('#test').text()
。 - 将
$('#test').text()
替换为脚本中的$('body')
或其他内容。 - 。
调试时要演绎! ;-)
您不应该再次使用$(document).ready
,因为您的文档已经加载了主页,因此再次使用它无济于事。尝试如下:假设这是您的测试.php:
<script>
jQuery(document).ready(function() {
$.ajax({
type:'post',
url:'submit.php',
success:function(data) {
$('#placeholder').append(data);
}
});
});
</script>
<div id='test'>Some Text</div>
<div id='placeholder'></div>
//这是您的提交.php要替换的内容
<?php
echo "<div id='ajaxContent'>
</div>
<script>
$(function(){
console.log($('#test').text());
$('#test').css('color','red');
});
</script>";
?>
注意:我在这里的确切意思是使用:
$(function(){
console.log($('#test').text());
$('#test').css('color','red');
});
在脚本中。
相关文章:
- 在Safari执行javascript之前对其进行修改
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 用Javascript修改内部标记的CSS规则
- 绑定Range输入以修改样式
- 可以从Chrome扩展修改窗口对象吗
- jQuery滚动器插件修改
- 将函数从onclick修改为onload
- jQuery UI自动完成-修改问题
- Javascript日期修改
- 如何通过JQuery修改样式属性
- 使用treewalker修改表
- Angularjs:修改js中的作用域,稍后在页面中使用
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 修改控制器AngularJS的全局值
- 修改数据后,setState不会触发重新渲染
- 通过sdk/system/events在修改请求观测器上测试http
- GWT:有没有一种方法可以修改GWT在编译中使用的Cast.java文件
- 在多个元素上使用jquery插件,只需稍作修改
- 为什么我从浏览器修改html/js时会多次发送ajax请求
- 从局部视图内部修改主视图