2015-12-02 62 views
1

我已经投入表的形式(也就是仅显示第一行所有其他的都一样):的jQuery插件span元素只有一次

<tr> 
    <td><label for="login">Username</label></td> 
    <td> 
     <input id="login" type="text" path="login" placeholder="Enter Login" 
             oninvalid="this.setCustomValidity('Please fill this field - it is mandatory')" 
             oninput="setCustomValidity('')"> 
    </td> 
</tr> 

我想要做的就是之前的“输入”元素添加“span”元素,但只有一次,意​​思是在添加之前 - 检查是否存在。在结果换句话说,它应该是这样的:

<span></span><input ... 

和代码水木清华这样的:

var spanvar = "<span/>"; 
if($('input').prev("span").length==0) --> check if there is no <span> before 
{ 
    $("input".before(spanvar)); ---> add span element but only once 
} 

回答

0

你可以做这样的事情

// Iterate through every input 
$("input").each(function(){ 

    // If no span 
    if($(this).prev("span").length==0){ 

    // Add span before this 
    $(spanvar).insertBefore(this); 
    } 
}); 
+0

但prev工作,如果前一个元素没有输入,但span? – ovod

+0

@ovod我没有得到你?请解释 – void

+0

来自docs:prev() - 获取匹配元素集中每个元素的紧前面的兄弟元素,可以通过选择器进行过滤。但不是兄弟姐妹。它仍然给我跨度元素? – ovod

0

检查,如果目前的前元素是类型span

$(this).prev().is('span') 

所以你可以proov

var $prev = $(this).prev(); 

if($prev.length == 0 || !$prev.is('span') { 
    $(this).before($('<span>')); 
} 
相关问题