2017-01-27 6 views
1

Я изменяю скрипт для отображения предупреждения о полях пароля, если включена блокировка CAPS.Элемент jQuery работает с append(), но не после()

Элемент, который я создаю, добавлен на страницу просто отлично, если я использую метод append(), но это не очень расширяемо, поскольку оно будет полагаться на поле пароля, имеющее соответствующий родительский элемент. Я хочу добавить это поле after(), но когда я это сделаю, оно отображается как [object Object].

Вот что я до сих пор:

$(document).ready(function(){ 
    $(":password").bind("keypress", function(e) { 
    el = jQuery('<div/>', { 
     id: 'caps_warning', 
     text: 'CAPS lock is on' 
    }) 

    kc = e.keyCode ? e.keyCode : e.which; 
    sk = e.shiftKey ? e.shiftKey : ((kc == 16) ? true : false); 

    if(((kc >= 65 && kc <= 90) && !sk) || ((kc >= 97 && kc <= 122) && sk)) { 
     el.appendTo(e.currentTarget.parentElement); 
    } else { 
    } 
    }); 
}); 

Я хочу заменить el.appendTo(e.currentTarget.parentElement); с e.currentTarget.after(el);.

+0

Попробуйте использовать '$ (e.currentTarget) .after (эл)' – abhishekkannojia

+0

Offtopic: что пустой еще очень раздражает меня – CarlosCarucce

+0

«_I использовать Append() но это не очень расширяемо, так как это будет ** полагаться на поле пароля, имеющее соответствующий родительский элемент ** ._ "[' .append() '] (https://api.jquery.com/append/) добавляет передавал контент как ребенок, а не как отдельный брат для каждого элемента коллекции. Элемент ': password' был бы родительским элементом' el' – Andreas

ответ

5

e.currentTarget - это узел dom, а не объект jQuery. Кроме того, такой же, как this

Попробуйте

$(this).after(el) 
+0

Ах, имеет смысл! Выработал удовольствие, спасибо. –