Подтвердить что ты не робот

Функция jquery val() не эквивалентна "$ (this).value ="?

Когда я пытаюсь установить текстовый ввод пустым (при нажатии) с помощью $(this).value="", это не сработает. Я должен использовать $(this).val('').

Почему? В чем разница? Каков механизм функции val в jQuery?

$(document).ready(function() {
    $('#user_name').focus(function(){
        $(this).val('');
    });
});
// error code: not working...
$(document).ready(function() {
    $('#user_name').focus(function(){
        $(this).value='';
    });
});
4b9b3361

Ответ 1

Вы хотите:

this.value = ''; // straight JS, no jQuery

или

$(this).val(''); // jQuery

С $(this).value = '' вы назначаете пустую строку в качестве свойства value объекта jQuery, который обертывает this - а не value из this.

Ответ 2

$(this).value пытается вызвать свойство 'value' объекта jQuery, которого не существует. Собственный JavaScript имеет свойство "value" для определенных объектов HTML, но если вы работаете с объектом jQuery, вы должны получить доступ к значению, вызвав $(this).val().

Ответ 3

Обратите внимание, что:

typeof $(this) - объект JQuery.

и

typeof $(this)[0] объект HTMLElement

то: если вы хотите применить .val() в HTMLElement, вы можете добавить это расширение.

HTMLElement.prototype.val=function(v){
   if(typeof v!=='undefined'){this.value=v;return this;}
   else{return this.value}
}

Тогда:

document.getElementById('myDiv').val() ==== $('#myDiv').val()

И

 document.getElementById('myDiv').val('newVal') ==== $('#myDiv').val('newVal')

العكس ИНВЕРС:

И наоборот, если вы хотите добавить свойство value в объект jQuery, выполните следующие действия:

  • Загрузите полный исходный код (не уменьшенный) i.e: example http://code.jquery.com/jquery-1.11.1.js.

  • Вставьте строку после L96, добавьте этот код value:"", чтобы инициализировать эту новую опору enter image description here

  • Искать в jQuery.fn.init, это будет почти строка 2747

enter image description here

  1. Теперь присвойте значение value prop: (Перед возвратом statment добавьте this.value=jQuery(selector).val()) enter image description here

Наслаждайтесь теперь: $('# myDiv'). значение

Ответ 4

Одна вещь, которую вы можете сделать, это следующее:

$(this)[0].value = "Something";

Это позволяет jQuery возвращать объект javascript для этого элемента, и вы можете обходить функции jQuery.