2013-04-10 52 views
0

我已经研究了这个主题,并且我假设没有通配符用于我想要做的事情之前作为最后一招。用于在选择器中使用atttributes的JQuery通配符

我需要从文档中拉出所有文本输入元素并将其添加到数组。但是,我只想添加具有ID的输入元素。

我知道你可以在使用ID选择器(如$(#\ S *))时使用\ S *通配符,但是我不能使用它,因为我需要仅通过文本类型来筛选结果,所以我按属性搜索。

目前,我有这样的:

values_inputs = $("input[type='text'][id^='a']"); 

这工作我怎么想它,但它带来的回只用“A”开头的文字输入元素。我想让所有的文本输入元素都带有任何'id'。 我不能使用:

values_inputs = $("input[type='text'][id^='']"); //or 
values_inputs = $("input[type='text'][id^='*']"); //or 
values_inputs = $("input[type='text'][id^='\\S*']"); //or 
values_inputs = $("input[type='text'][id^=\\S*]"); 
//I either get no values returned or a syntax error for these 

我想我只是在寻找*在SQL相当于jQuery的属性选择。 有没有这样的事情,或者我只是以错误的方式接近这个问题?

回答

1

其实,这是很简单:

var values_inputs = $("input[type=text][id]"); 
+0

哦,我的天啊!你是对的。我不敢相信这很简单。谢谢。 – rocklandcitizen 2013-04-10 19:49:23

1

你的逻辑有点含糊。我相信你不要想要的元素任何身份证,而是元素其中身份证不是等于一个空字符串。用这个。

values_inputs = $("input[type='text']") 
    .filter(function() { 
     return this.id != ''; 
    }); 
+0

实际上,我正在修补别人的html代码。所以没有一个表单元素有id。我只需要将id添加到我需要使用的id。我需要在文档的其余部分随机地过滤掉所有其他随机输入元素。所以我猜想用id添加元素会更容易,因为我将它编码并在后面的函数中使用。 – rocklandcitizen 2013-04-10 19:52:37

1

试试你的选择更改为:

$("input[type='text'][id]") 
0

我想出了另一种方式来使用通配符非常简单。这帮了我很多,所以我想我会分享它。

您可以通过以下方式在选择器中使用属性通配符来模拟'*'的使用。比方说,你已经动态生成的元素与除了代表指数动态变化的数字相同的命名约定创建的窗体:

id='part_x_name' //where x represents a digit 

如果您只想检索文字输入那些有标识的某些部分名称和元素类型,你可以做到以下几点:

var inputs = $("input[type='text'][id^='part_'][id$='_name']"); 

,瞧,它会检索所有那些有能力在字符串末尾的ID字符串的开头“PART_”和“_name”文本输入元素。如果您有类似

id='part_x_name_y' // again x and y representing digits 

你可以这样做:

var inputs = $("input[type='text'][id^='part_'][id*='_name_']"); //the *= operator means that it will retrieve this part of the string from anywhere where it appears in the string. 

根据其他的id的名称是什么它可能会开始变得有点棘手,如果其他元素的ID有类似的命名约定你文件。您可能需要在指定通配符方面多一点创意。在大多数情况下,这将足以满足您的需求。