获取与jquery
选择元素下我有一个选择,我得到的是第一个元素:获取与jquery
$("#MyControl")[0]
是否有可能获得比访问像一个数组中的元素之外的功能的元件?
我想要做的就是将这个元素传递给一个带有.call()的函数来定义上下文。
下面是一个例子:
$(document).ready(function() {
$(document).on("change", "#MyControl", setActivityControlsState);
});
setActivityControlsState: function() {
var selector = "#automaticActivityCreation";
if ($(selector).length > 0) {
if ($.isNumeric(this.value) && this.value > 0)
$(selector).show();
else
$(selector).hide();
}
}
referenceFormOnSuccess: function (data) {
setActivityControlsState.call($("#MyControl")[0]);
}
正如你可以在refreshFormOnSuccess功能看,我必须界定 '本' 与$( “#MyControl”)[0]。
我只想知道是否有更好的方法来做到这一点。
请注意,我不想要的东西,如$来访问我的控件的值(本).VAL()
我建议一个小的重新构造,其减轻这种需要:
$(document).ready(function() {
$(document).on("change", "#MyControl", setActivityControlsState);
});
setActivityControlsState: function() {
// cache jquery object instead of just the selector
// for better memory management
var automaticActivityCreation = $("#automaticActivityCreation");
if (automaticActivityCreation.length > 0) {
if ($.isNumeric(this.value) && this.value > 0)
automaticActivityCreation.show();
else
automaticActivityCreation.hide();
}
}
referenceFormOnSuccess: function (data) {
// fire the change event which will tap
// the listener you set up in .ready
$("#MyControl").trigger('change');
}
,但如果你真的想要得到与jQuery的对象,你确实有一些选择:
// jQuery select #MyControl and get as dom element with array
$("#MyControl")[0]
// jQuery select #MyControl and get as dom element with .get
$("#MyControl").get(0)
而是因为你正在使用一个电子字元素有ID,你只可以使用一个ID在同一时间,你真的不需要jQuery的这个
document.getElementById('MyControl')
或
referenceFormOnSuccess: function (data) {
setActivityControlsState.call(document.getElementById('MyControl'));
}
'$(“#MyControl”).get()'返回将jQuery对象转换为普通数组。 – 2012-08-10 21:01:43
啊,我的坏。编辑。 – Fresheyeball 2012-08-10 21:43:04
@Fresheyeball:非常感谢。这正是我所说的:一个很好的答案。我将使用get而不是brakets来访问第一个元素。 – Samuel 2012-08-10 21:56:45
http://api.jquery.com/get/ - 两个选项都做同样的事情,没有一个比另一个更好 – nbrooks 2012-08-10 20:34:16
这里有什么问题? 'setActivityControlsState.call($(“#MyControl”)[0]);'工作正常。 – 2012-08-10 20:36:37
或者你也可以使用'$(“#MyControl:eq(0)”)' – redDevil 2012-08-10 20:38:50