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

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

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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值