2012-11-09 85 views
1

我相信有一个简单的解决方案。获取jQuery()选择的默认(?)元素

开始的场景如下。 我创建<select>元件和dynamycally填充它:

function CreateDropDown(name, id, optionList) 
{ 
    var combo = $("<select></select>").attr("id", id).attr("name", name); 

    $.each(optionList, function (i, item) { 
     combo.append("<option value='"+item.val+"'>" + item.el + "</option>"); 
    }); 

    return combo; 
} 

目的是提取outerHTML。下面的作品是正确的:

combo[0].outerHTML(); 

但我觉得索引数组非常粗糙。至少在jQuery()函数返回单个元素数组的所有情况下。

问题

每当jQuery的()函数返回一个元素数组,是有可能得到不数组索引独特元素

Demo

+0

取['第一()'](http://api.jquery.com/first/)? 'outerHTML()'究竟是什么 - 我不知道这个。或者你的意思是本地js'outerHTML'(这不是函数)? – Christoph

+0

你想要默认的选定元素?还是独特的元素? – Brad

+0

@布拉德:独特。 –

回答

2

如果您觉得索引阵列非常粗糙,您可以编写自己的漂亮的辅助方法。像一个:

window.$$ = function(){ 
    return jQuery.apply(jQuery,arguments)[0]; 
} 

用法:

var combo = $$("<select></select>"); 
console.log(combo.outerHTML); 
+0

非常好的一点。 –

1

使用.get()获得html元素。

http://api.jquery.com/get/

+0

感谢你的回答。但是combo.get()也返回一个数组。正如jbabey所评论的那样,我不得不将它编入索引。 –

+0

如果您只是想要第一个元素,您可以使用.first()或.get(0)或[0]。 JQuery对象只是html元素的数组。 –

3

jQuery的对象是DOM对象固有的收藏,并有治疗jQuery对象围绕一个单一的项目包装没有语法的方式。

jQuery文档建议使用get method来访问各个DOM元素。它没有评论索引操作符和.get()之间的性能差异,但它确实表示“每个jQuery对象也伪装成一个数组”,所以假设索引操作符只是添加了另一个方法调用就可以了。