Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从jQuery选择器访问javascript方法_Javascript_Jquery - Fatal编程技术网

如何从jQuery选择器访问javascript方法

如何从jQuery选择器访问javascript方法,javascript,jquery,Javascript,Jquery,我有一个简单的js: var innerText = document.getElementById("TaskId").options[0].text; 我想知道如何将其转换为jQuery: var innerS = $("#TaskId"); var innerText = innerS.options[0].text; 这会引发一个错误: innerS.options is undefined 编辑 根据一些辩论,我一起进行了一次快速速度测试: js: 两种可能的解决办法: var

我有一个简单的js:

var innerText  = document.getElementById("TaskId").options[0].text;
我想知道如何将其转换为jQuery:

var innerS = $("#TaskId");
var innerText = innerS.options[0].text;
这会引发一个错误:

innerS.options is undefined
编辑

根据一些辩论,我一起进行了一次快速速度测试:

js:


两种可能的解决办法:

var innerText = innerS[0].options[0].text; 
// Are you sure about .text? I never used it.


jQuery对象包含一个DOM元素数组。如果您想要直接访问DOM元素,有多种方法可以直接访问。例如,您可以使用以下命令直接获取第一个DOM元素:

var innerS = $("#TaskId").get(0);
现在,
innerS
是实际的DOM元素,不再是jQuery对象

要获得最快的执行时间,请使用:

var innerS = document.getElementById("TaskId");
jQuery可以快速编写代码,但执行时间并不总是最快的,因为jQuery对象会带来一些开销(构造它们、排序DOM元素等)

您可以按如下方式获取整个DOM数组:

var optionElements = $("option").get();
var text = $("#TaskId").text();
当然,使用jQuery对象的原因之一是,它们有一组跨浏览器的方法,在某些情况下可以轻松地使用它们的方法而不是直接的DOM方法。在您的特定情况下,您可以获得如下所示的内部文本:

var optionElements = $("option").get();
var text = $("#TaskId").text();

jQuery对象本质上只是DOM元素的包装器,因此为了访问DOM元素本身,可以使用.get(0)或[0]:


是的,这里的文本不带
()
。我不确定它是否适用于所有dom元素,但它适用于IE、chrome、FF、opera,用于从select元素中的option dom元素中获取文本。谢谢,我做了一些研究并为option元素找到了这些,其中提到了
.text
属性。另一方面:我的第二个版本是jQuery方法,它使用id
TaskId
获取select的第一个选项。我不喜欢第一个版本,它只使用jQuery获取select。最好使用普通js,而不是像@jfriend00建议的那样。@bfavareto-Perf-Tip:Avoid和其他jQuery选择器扩展在初始查询中使用。在这种情况下,
#TaskId选项:第n个子(0)
可以通过CSS解析,在较新的浏览器中解析速度更快。涵盖性能测试。@gnarf,很高兴知道!但这不是可以在选择引擎中优化的东西吗<代码>:首先看起来更具可读性…谢谢,我非常喜欢关于选择器返回数组的解释。我应该意识到这一点,但我忽略了它。
.get(0)
在这里非常有效,但使用
[0]
肯定更快。
.get()
对于返回原始数组或获取负数非常有用indexs@gnarf-客户端的速度对我来说是个大问题,所以感谢您指出原生javascript和jQuery
.get
方法之间的比较。另外,似乎他正在尝试获取
innerS
-so
innerS.find(“option”).first().text()
$(“#TaskId”)[0]
看起来很难看,虽然“本质上只是DOM元素的包装器”->“本质上是一个带有jQuery原型的DOM元素数组”…重点放在“本质上”,因为可能值得注意的是,jQuery对象不是严格意义上的数组,而是数组,因为它具有与其DOM元素相对应的长度和编号索引。当jQuery对象具有多个元素时,应该对其进行测试,与类选择器类似。@gdoron-
TaskId
是一个
DOM元素,下面有1000多个选项。检查此项:
$('option')[0]
vs
$('option')。获取(0)
@gdoron-我尝试过,得到了非常相似的数字
.get(0)
:1468,
[0]
:1357,
js
:142.@TravisJ-The
taskId
只是测试
[0]
.get(0)
性能,执行
var taskId=jQuery(“taskId”)
所需的时间没有计入这些结果,请查看
jQuery(“taskId”)的结果
vs
getElementById
查看那里的结果。
var text = $("#TaskId").text();
$('#TaskId').get(0).options[0].text;

// OR

$('#TaskId')[0].options[0].text;