2015-12-02 4 views
1

я форму поместить в таблицу (. Я показал только первую строку все другие такие же):JQuery пядь добавить элемент только один раз

<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

Но делает ли предыдущая работа, если предыдущий элемент не вводится, но охватывает? – ovod

+0

@ovod Я тебя не понял? Пожалуйста, объясните – void

+0

Из docs: prev() - Получите непосредственно предшествующий родственный элемент каждого элемента в наборе согласованных элементов, необязательно отфильтрованный селектором. Но не является родным братом. Он все еще передал мне элемент span? – ovod

0

если элемент, прежде чем ток относится к типу span

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

, так что вы могли бы proov

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

if($prev.length == 0 || !$prev.is('span') { 
    $(this).before($('<span>')); 
} 
Смежные вопросы