什么是$(e.target).find和template.find('输入')之间的区别。

时间:2016-05-05 06:38:29

标签: javascript jquery html meteor

它可能是基本但需要解释用例的东西。就像有时打击"进入"输入数据,有时鼠标点击工作。我关心"陷阱"我会忽略的。也许它可以在Firefox中使用,但不能在Chrome中使用。

我看到了以下两种方式,两种方式都是将数据输入表单元素的方法。

第一种方式

的JavaScript

var $body = $(e.target).find('[name=body]');  //defines the content
var comment = { body: $body.val() };    

HTML

<form class="form-send-message" id="addcomment" data-keyboard-attach>
  <textarea id="body" name="body"></textarea>
</form>

第二种方式

的JavaScript

var message = template.find('input').value;

HTML

<form class="message" data-keyboard-attach>
    <input type="text" name="body" id="body">
    <button class="icon" type="submit"></button> 
</form>

2 个答案:

答案 0 :(得分:1)

在这里你可以看到两种方法来找到输入/ textarea的值并附带解释:

'submit .new-post': function(event){
    //returns name="postBody" content from the form you're submitting
    var postBody = event.target.postBody.value;  

    //returns the value of an html element that exists in DOM, even if its inside a different template or form.
    var postBody = $('.someClass').val()  
}

答案 1 :(得分:1)

您的第一个代码是jQuery,而您的第二个代码是Meteor。他们都可以在适当的情况下完成同样的事情。另外,根据this answer,meteor的template.find是jQuery的$的别名,这意味着它们完全相同。

但是,在这种情况下,代码不会做同样的事情。

您的第一个代码在e.target内找到一个名为“body”的元素的值。我假设eEvent,但无法判断您提供的当前代码量。

第二个代码只获取它找到的第一个INPUT元素的值。