在使用jQuery的Backbone.js中,在视图中选择元素的正确方式是什么
In Backbone.js using jQuery, what is the correct way to select an element within a view?
在下面的代码中,我有两个jQuery选择器,它们似乎工作正常。有没有理由选择其中一种而不是另一种,或者有没有其他更可取的方式?
var val1 = $("#username", this.el ).val()
var val2 = $(this.el).find("#username").val();
我知道不应该有多个具有相同id的元素,但如果有多个元素具有相同id,那么在视图中只选择元素的最佳方式是什么(请参阅下面的用户名示例)。
<body>
Username: <input type="text" id="username" /><br />
<br /><br />
<div id="login">
Username: <input type="text" id="username" /><br />
<button id="loginButton">Login</button>
</div>
<script type="text/javascript">
var LoginView = Backbone.View.extend({
el: "#login",
events: {
"click #loginButton": "login"
},
login: function () {
var val1 = $("#username", this.el ).val()
var val2 = $(this.el).find("#username").val();
console.log(val1);
console.log(val2);
}
})
var loginView = new LoginView();
</script>
</body>
---------------------更新-----------------------
我创建了jsFiddle示例,这样就可以有一个工作示例供其他人查看。http://jsfiddle.net/BarDev/9QpKy/
为了简洁起见,我通常使用Backbone提供的快捷方式:
this.$('#username')
是$('#username', this.el);
的别名
然而,你使用的任何选择方法都会很好地发挥作用。你的例子中的另外两种方法都很好。
首先,我建议您不要在一个页面上有多个id相同的元素。尽量避免这种情况。在寻找元素时,我认为find
比选择通过上下文的元素要好,因为上下文出于性能原因是好的,但find
比context
快,所以它更好,也更紧凑和可读。
var val2 = $(this.el).find("#username").val();
相关文章:
- 如何制作链接到网页特定元素的桌面快捷方式
- 列出每行2个元素的最佳方式是按角度重复ng
- 在jQuery中,创建和附加元素的方式更快
- 在滚动中旋转元素,哪种方式最轻
- 在保持元素一致性的同时旋转数组元素的最佳方式'id
- 安装后以程序方式关注形状元素
- 预隐藏元素是最容易访问的方式
- 在选定元素中上下移动选项的方式
- 迭代JSON对象并将元素打印到屏幕上的最佳方式是什么
- 复制元素的最佳方式是:只复制元素的类型和属性
- 如何查找数组中所有出现的元素的索引(Ramda.js方式)
- 我如何使用JavaScript(jQuery)在HTML中以传统方式创建元素的副本作为新元素
- 使用 jQuery 创建嵌套 HTML 元素的最佳方式
- 以最有效的方式剪切和粘贴数组元素
- Drupal 7 Field API:如何以编程方式发送表单元素属性 #ajax 指定的AJAX请求
- 无法设置未定义的 - 以编程方式创建的元素的属性 X
- “防止”以编程方式单击元素
- 如何以不同的方式设置每行/行的每个最后一个元素的样式
- 在内容可编辑元素上按 Enter 时插入 BR 或 P 标签的跨浏览器方式
- 以编程方式单击 UIWebView 中的“提交”按钮(无元素 ID、名称、类或标记)