我有一个全局JS方法,在每个标记为具有类的字段前放置* .fish-label
代码是:
var fishString = "<span class='fish-label'> * </span>";
$elements.each(function (index, value) {
if ($(this).html().indexOf(fishString) != 0) {
$(this).prepend(fishString);
}
});
这适用于除IE以外的所有浏览器。当我提醒html()值时,IE会对注入的HTML进行大写,并且我的引号也会在某处丢失。
有没有更好的工作方式我可以实现这个?这个想法是,如果函数被调用两次,它将不会添加两个星号。
答案 0 :(得分:2)
你可以filter
这些元素排除那些已经有.fish-label
的元素,并在其余元素前加一个元素:
var fishString = "<span class='fish-label'> * </span>";
$elements.filter(function() {
return !$(this).has(".fish-label").length;
}).prepend(fishString);
答案 1 :(得分:1)
您可以像任何其他常规嵌套DOM元素一样搜索元素。
var fishString = "<span class='fish-label'> * </span>";
$elements.each(function() {
if ($(this).children('span.fish-label').length === 0) {
$(this).prepend(fishString);
}
});
答案 2 :(得分:1)
要做到这一点,你也可以没有js。 例如,如果像每个项目的第一个标签,您可以使用以下语句:
<强> HTML 强>
<label class="required" for="username">Username</label>
<input id="username" type="text" value="" name="username">
<强> CSS 强>
label.required:after {
content: " *";
}
答案 3 :(得分:0)
如果这只是UI-stuff,您可以使用CSS功能:
.fish-label:before {
content: "* ";
}
请参阅此处的工作示例:http://jsfiddle.net/mikhailov/7vxb5/1/