在下面的代碼中,我有兩個似乎正常工作的jQuery選擇器。是有理由做一個而不是另一個,還是有另一種首選方法?在使用jQuery的Backbone.js中,在視圖中選擇元素的正確方法是什麼?
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/
我沒有檢查,但我認爲,當通過id選擇上下文並不那麼重要的性能明智。但是在其他情況下,它仍然是一個好建議 – Guillaume86
@ Guillaume86 - 是的,如果id是唯一的,那麼不需要在jQuery對象中傳遞find的上下文,那麼可以直接使用id選擇器。 – ShankarSangoli