如何在type="text/template"的定义模板中加入js方法

        首先要清楚javascrip type类型为 text/template 的作用,它相当于定义一个模板,如果没有使用html()方法的话,是显示不出来的,在js里面,经常需要使用js往页面中插入html内容,例如:

var name = 'suking';
$('#d').append('<div class="t">' + name + '</div>');

       如果html简短还好,但是遇到大段的,如登录弹框什么的,直接用字符串存储会很不方便,不光要处理单引号,还需要用到很多 + 号把字符串连接起来。

     而给<script>设置type="text/template",在里面写入html的好处是标签里的内容默认不会被执行,也不会显示在页面,而且可以放置除script标签以外的所有标签,又能保证浏览器不去执行它导致报错。使用时可以通过另一个script获取,然后再通过相关的模板工具进行处理,插入到页面中。这样就把大段的html操作从js里分离了。实例:

<body>
    <div id='detail'></div>
</body>
<script type="text/template" id="quickLogin">
    <form method="post" id="login_form" class="login_form">
        <div>
            <p>Email:</p>
            <input type="text" id="email" name="name" value="" />
        </div>
        <div>
            <p>Password:</p>
            <input id="user_pwd" type="password" name="password"  value="" />
        </div>
        <input type="submit" value="Log In" />
    </form>
</script>
<script language="javascript">
// Jquery 写法
    $('#detail').append($('#quickLogin').html());
// JavaScript 写法
    var show = document.getElementById("detail");
    var html = document.getElementById("quickLogin");
    show.innerHTML = html.innerHTML;
</script>

        重点来了,当我们想将form表单用ajax提交又该怎么写了,我们知道script内不可以再写入script标签,只能另写一个script,但当我用正常的方法写的时候却发现js并不生效,点击submit并不能触发下面的方法。

$('#login_form').submit(function(){
    // 执行的ajax方法等
});

        这是因为,上面的写法是页面加载时绑定事件,可这个时候我们的登录页并还没有加载,是等js触发后才插入的html页面,所以上面的方法并不能绑定到login_form。应该选用会时实监听绑定事件的方法,正确写法如下:

$(document).on('submit', '#login_form', function(e) {
    e.preventDefault();
    // 执行ajax等方法
});

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值