第一次写的时候是这样写的
pagehtml+="<j:perm code="33"><a href='javascript:void(0)' name='soft' style='display: none;float: left;margin-left: 80px;' onclick=upward("+value+","+defaulthtml.parentId+") >↑</a> <a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") >↓</a></j:perm> ";
用 <j:perm code="33">...</j:perm>
包起来,结果在某些 插件里面,这个自定义标签并没有起作用;
当时绞尽脑汁想到的办法就是在 拼字符串的是 给他拼上 style样式:
style='display: none;float: left;margin-left: 80px;'
然后在jsp页面 写自定义标签:
<!-- 排序 -->
<j:perm code="33">
<script type="text/javascript" >
$(document).ready(function () {
$('#treeGrid').on('bindingComplete', function(event) {
setTimeout(function(){
var softElems=document.getElementsByName('soft');
for (var int = 0; int < softElems.length; int++) {
document.getElementsByName('soft')[int].style.display='block';
}
}, 100);
});
});
</script>
</j:perm>
这样,看着是解决了。但是当操作 插件的时候; 样式基本失效。 因为 在插件里面做操作,会有js 事件。js里面 自动的把我 在
pagehtml+="<j:perm code="33"><a href='javascript:void(0)' name='soft' style='display: none;float: left;margin-left: 80px;' onclick=upward("+value+","+defaulthtml.parentId+") >↑</a> <a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") >↓</a></j:perm> ";
这里面写死的样式还原,这样页面的自定义标签也不会再去验证。就这样以上的解决方案已经失败了!
解决方案来了
第一种:
把以上的js代码 全部写在jsp页面;因为自定义标签就会在 js里面起作用了。因为自定义表情其实也就相当于小脚本! 只不过用标签话封装了:
<j:perm code="33">
pagehtml+="<a href='javascript:void(0)' name='soft' onclick=upward("+value+","+defaulthtml.parentId+") >↑</a> <a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") >↓</a> ";
</j:perm>
这样我只要不加在这段代码里面拼写的界面元素自然不会显示,不过这种方法不推荐。因为 js和 jsp页面最好是分离的! 这样才不会每次都去加载这些js代码,浏览器会用自己的缓存把js 文件缓存起来
第二种:
分离开的js文件是这样的
$(document).ready(function () {
...
//排序
if(sort){
pagehtml+="<a href='javascript:void(0)' name='soft' onclick=upward("+value+","+defaulthtml.parentId+") >↑</a> <a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") >↓</a> ";
}
...
});
$(document).ready(function ()
这段话的意思是 当整个页面加载完后才会执行里面的js
然后我在jsp页面是这样写的
<!-- 由于 在 jqwidget js里面 自定义表情不起作用。特在此实现自定义标签功能 -->
<script type="text/javascript">
var sort = false;//排序
<j:perm code="33">
sort = true;
</j:perm>
</script>
这样也发挥了自定义标签的作用。 收工~~~~~~