#jquery #this
#jquery #это
Вопрос:
Я пытаюсь прочитать относительное значение элемента.
$('.input-default').ready(function()
{
$('.input-default').inputDefault($(this).attr('rel'));
});
Но проблема в том, что $ (this) каким-то образом ссылается на весь HTML-документ. Почему? И как мне это исправить?
Ответ №1:
Вы не запускаете его в .ready()
событии конкретного элемента. Я думаю, что контекстом в то время могло быть window. Просто обратитесь к входным данным напрямую.
$(document).ready(function() {
var rel = $('.input-default:first').attr('rel'); //added :first to make sure you only get the rel of the first
});
Редактировать
Прочитав ваши комментарии и выполнив некоторый поиск, я понял, что вы используете плагин ввода по умолчанию.
Просматривая его документацию, вы можете сделать следующее, чтобы получить то, что вы хотите
$(document).ready(function(){
$('.input.input-default').inputDefault({defaultAttr: 'rel'});
});
Я не уверен, можно ли вызвать плагин так, как вы делаете в своем коде, но если вы уверены, что этот метод работает, и вы хотите установить значение вручную, вы можете сделать следующее.
Для перебора коллекции элементов DOM вы можете использовать .each()
функцию.
$(document).ready(function(){
$('.input-default').each(function(){
$(this).inputDefault($(this).attr('rel'));
});
});
Комментарии:
1. Это должно быть общеприменимо, поэтому я могу просто присвоить элементам формы класс input-default и значение rel, которое должно быть значением по умолчанию в поле ввода.
2. Ну, класс может быть применен к нескольким элементам, поэтому вызов a
.val()
или получение значения не будет иметь смысла, потому что у вас много экземпляров. Если вы удалите:first
фильтр, вы получите коллекцию3. = 1, ваш ответ намного лучше и лаконичнее, чем мой (был) 🙂
4. Я не совсем понимаю, о чем ты говоришь, Джон. Зачем мне вызывать val()? И зачем мне нужна коллекция? Если поля ввода пусты, в них должно быть что-то вроде «Введите здесь свое имя пользователя», для этого и предназначена функция.
5. @Thomas ты работаешь над классом, поэтому ты получишь коллекцию. В любом случае, вы можете упомянуть, что используете
inputdefault
плагин в своем вопросе. Я обновил свой ответ и перечислил ваши варианты