自定义标签在js拼html元素不起作用时的解决方案

来源:互联网 发布:usb端口重置请求失败 编辑:程序博客网 时间:2024/04/30 10:59

第一次写的时候是这样写的

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>&nbsp;<a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") ></a></j:perm>&nbsp;";

<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>&nbsp;<a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") ></a></j:perm>&nbsp;";

这里面写死的样式还原,这样页面的自定义标签也不会再去验证。就这样以上的解决方案已经失败了!

解决方案来了

第一种:
把以上的js代码 全部写在jsp页面;因为自定义标签就会在 js里面起作用了。因为自定义表情其实也就相当于小脚本! 只不过用标签话封装了:

<j:perm code="33">    pagehtml+="<a href='javascript:void(0)' name='soft' onclick=upward("+value+","+defaulthtml.parentId+") ></a>&nbsp;<a href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") ></a>&nbsp;";</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>&nbsp;<a                          href='javascript:void(0)' name='soft' onclick=down("+value+","+defaulthtml.parentId+") >↓</a>&nbsp;";}...});

$(document).ready(function ()这段话的意思是 当整个页面加载完后才会执行里面的js

然后我在jsp页面是这样写的

<!-- 由于 在 jqwidget js里面 自定义表情不起作用。特在此实现自定义标签功能 --><script type="text/javascript">    var sort = false;//排序    <j:perm code="33">         sort = true;    </j:perm></script>

这样也发挥了自定义标签的作用。 收工~~~~~~

1 0
原创粉丝点击