1

我已经构建了一个underscore-js用于呈现模板的系统,它在除 IE 之外的所有浏览器中都能正常工作。

这是模板的一个片段:

<td><input type="text"  id="${_id}_name" class="name" value="${name}" /></td>

在 IE8 中,我将type=text在实际文本字段中看到,如果name提供的对象中是一个空字符串。

再深入一点,我发现 IE 8 中的下划线模板如下所示:

<tr id="319"><TD><INPUT id=319_name class=name value= type=text></TD>

其他浏览器下划线的输出是:

<td><input type="text" id="310_name" class="name" value=""></td>

所以很明显,属性值周围缺少引号导致了这个问题。

我也注意到了同样的问题jquery-tmpl

下面是一段代码,展示了如何设置模板:

template = _.template( tmpl );

$.each(data.data.stored, function(i, row) {                        
   $('table#user_data').append(template.template(row));

任何想法如何/为什么会发生这种情况?

4

1 回答 1

3

好的,找到解决方案。我在 jquery-tmpl 的 github 上发现了这个问题,这里:

https://github.com/jquery/jquery-tmpl/issues/3

显然这是由 IE 序列化 html 的方式引起的,解决方法是在标签中放置一些空格。所以:

${name} 变成 ${ name }

于 2012-06-19T21:25:43.103 回答