【发布时间】:2012-08-11 05:43:17
【问题描述】:
我有一个选择器,我可以在其中获取第一个元素:
$("#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] 定义“this”。
我只是想知道是否有更好的方法来做到这一点。
请注意,我不想使用 $(this).val() 之类的东西访问我的控件的值
【问题讨论】:
-
api.jquery.com/get - 虽然这两个选项都做同样的事情,但没有一个真的比另一个更好
-
这里有什么问题?
setActivityControlsState.call($("#MyControl")[0]);工作正常。 -
或者你也可以使用
$("#MyControl :eq(0)") -
@redDevil 这给出了一个 jQuery 对象,他想要 dom 元素(而且那里不会有空格)。
.get( index )是方法 -
使用
$("#MyControl").first()或$("#MyControl").get(0)或使用纯 JavaScriptdocument.getElementById("MyControl")。
标签: javascript jquery jquery-selectors