向各位大佬请教:
$("#blank_showz").empty();
var $new_obj = $("<div></div>");
$new_obj.prop("height","30px");
$new_obj.prop("margin","0 auto");
$new_obj.prop("th:replace","./odata-template.html :: test-my");
$("#blank_showz").append($new_obj);
alert($("#blank_showz").html())
结果,新dom节点<div>什么属性都没有看到。各位大佬,请问这是什么原因造成的?望各位大佬不吝赐教!
补充:th:replace是thymeleaf的属性。
再次表示感谢!
js改不了服务器端标签,自己查看服务器端标签生成的客户端标签是什么,更改对应的客户端dom对象。
或者直接ajax请求服务器重新编译一次服务端标签获取返回的html来更新客户端
prop()是设置DOM对象的属性,DOM对象的属性不会出现在html标签的源代码中。
th:replace 是html标签的属性,应该用attr()方法设置
height和margin是css样式的属性,应该用css()方法设置
$new_obj.css("height","30px");
$new_obj.css("margin","0 auto");
$new_obj.attr("th:replace","./odata-template.html :: test-my");
准确讲prop设置的是元素对象的属性及返回值,div中height margin属性存在css中,元素本身不存在此类属性,所以设置失败。
prop 我一般用于 单选框和多选框
$("input[type='checkbox']").prop("checked",true)
可以试试attr()方法
prop() 方法应该用于检索属性值,例如 DOM 属性(如 selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected)。
你这里,只能使用 attr() 方法代
另外
$new_obj.prop("height","30px");
$new_obj.prop("margin","0 auto");
这个明显是css,方法也用错了,应该$new_obj.css({'height':'30px', 'margin':'0 auto'});