W poniższym kodzie mam dwa selektory jQuery, które wydają się działać poprawnie. Czy jest jakiś powód, aby zrobić jeden zamiast drugiego, czy jest inny preferowany sposób?W Backbone.js przy użyciu jQuery, jaki jest właściwy sposób na wybór elementu w widoku?
var val1 = $("#username", this.el).val()
var val2 = $(this.el).find("#username").val();
Zdaję sobie sprawę, że nie powinno być wiele elementów z tym samym identyfikatorem, ale jeśli istnieje wiele elementów z tym samym identyfikatorem, co jest najlepszym sposobem, aby wybrać tylko element w widoku (patrz przykład poniżej dla nazwy użytkownika).
<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>
--------------------- Aktualizacja --------------------- ---
Tworzę przykład jsFiddle, aby mógł istnieć działający przykład dla innych osób do obejrzenia. http://jsfiddle.net/BarDev/9QpKy/
Nie sprawdzam, ale myślę, że przy wyborze według identyfikatora kontekst nie jest tak ważny. Ale nadal jest to dobra rada w innych przypadkach. – Guillaume86
@ Guillaume86 - Tak, jeśli identyfikatory są unikatowe, nie ma potrzeby przekazywania kontekstu wyszukiwania w obiekcie jQuery, można bezpośrednio użyć selektora id. – ShankarSangoli