Вопрос по javascript, this, jquery – В чем разница между «$ (это)» и «это»?
В настоящее время я работаю над этим учебником:Начало работы с jQuery
Для двух примеров ниже:
<code>$("#orderedlist").find("li").each(function (i) { $(this).append(" BAM! " + i); }); $("#reset").click(function () { $("form").each(function () { this.reset(); }); }); </code>
Обратите внимание, что в первом примере мы используем$(this)
добавить текст внутри каждогоli
элемент. Во втором примере мы используемthis
непосредственно при сбросе формы.
$(this)
кажется, используется гораздо чаще, чемthis
.
Мое предположение в первом примере,$()
преобразует каждыйli
элемент в объект JQuery, который понимаетappend()
функция, тогда как во втором примереreset()
можно вызвать прямо в форме.
В основном нам нужно$()
для специальных функций только для jQuery.
Это правильно?
this ссылаться на объект JavaScript и$(this) используется для инкапсуляции с JQuery.
Example =>
// Getting Name and modify css property of dom object through jQuery
var name = $(this).attr('name');
$(this).css('background-color','white')
// Getting form object and its data and work on..
this = document.getElementsByName("new_photo")[0]
formData = new FormData(this)
// Calling blur method on find input field with help of both as below
$(this).find('input[type=text]')[0].blur()
//Above is equivalent to
this = $(this).find('input[type=text]')[0]
this.blur()
//Find value of a text field with id "index-number"
this = document.getElementById("index-number");
this.value
or
this = $('#index-number');
$(this).val(); // Equivalent to $('#index-number').val()
$(this).css('color','#000000')
jQuery
рекомендуется использовать$(this)
обычно. Но если вы знаете (вы должны учиться и знать) разницу, иногда ее удобнее и быстрее использоватьthis
, Например:
$(".myCheckboxes").change(function(){
if(this.checked)
alert("checked");
});
легче и чище, чем
$(".myCheckboxes").change(function(){
if($(this).is(":checked"))
alert("checked");
});
Да вам нужно только$()
когда вы используете jQuery. Если вы хотите, чтобы JQuery помогал выполнять DOM, просто помните об этом.
$(this)[0] === this
По сути, каждый раз, когда вы возвращаете набор элементов, jQuery превращает его вобъект jQuery, Если вы знаете, что у вас есть только один результат, он будет в первом элементе.
$("#myDiv")[0] === document.getElementById("myDiv");
И так далее...
$(this)[0]
Error: User Rate Limit Exceededthis
Error: User Rate Limit Exceeded
$(this)[0]
Error: User Rate Limit Exceeded$("#myDiv")[0]
Error: User Rate Limit Exceededdocument.getElementById("myDiv")
Error: User Rate Limit Exceeded