jQuery的IDselect开始于特定的文本
我有这个jQuery代码:
$( "#editDialog" ).dialog({ autoOpen: false, show: { effect: "blind", duration: 1000 }, hide: { effect: "explode", duration: 1000 } });
但是我有几个ID的ID是这样的:editDialog-0,editDialog-1,….,editDialog-n。
我怎样才能使所有这些div的jQuery代码,就像上面的那个?
使用jquery 从属性select器开始
$('[id^=editDialog]')
替代解决scheme – 1(强烈推荐)
一个更清洁的解决scheme是添加一个共同的类到每个div和使用
$('.commonClass')
。
但是,如果html标记不在您的手中,并且由于某种原因无法更改,您可以使用第一个标记。
替代解决scheme – 2 (不build议如果n is a large number
)(根据@Mihai Stancu的build议)
$('#editDialog-0, #editDialog-1, #editDialog-2,...,#editDialog-n')
注意:如果有2个或3个select器,并且列表没有改变,这可能是一个可行的解决scheme,但它不是可扩展的,因为我们必须在镇上有新的ID时更新select器。
让我提供一个更广泛的答案考虑到你还没有提到的事情,但会发现有用的。
对于你目前的问题,答案是
$("div[id^='editDialog']");
脱字符(^)取自正则expression式,意思是starts with
。
解决scheme1
// Select elems where 'attribute' ends with 'Dialog' $("[attribute$='Dialog']"); // Selects all divs where attribute is NOT equal to value $("div[attribute!='value']"); // Select all elements that have an attribute whose value is like $("[attribute*='value']"); // Select all elements that have an attribute whose value has the word foobar $("[attribute~='foobar']"); // Select all elements that have an attribute whose value starts with 'foo' and ends // with 'bar' $("[attribute^='foo'][attribute$='bar']");
上面的代码中的attribute
可以改变成元素可能具有的任何属性,比如href
, name
, id
或者src
。
解决scheme2
使用类
// Matches all items that have the class 'classname' $(".className"); // Matches all divs that have the class 'classname' $("div.className");
解决scheme3
列出他们(也在以前的答案中指出)
$("#id1,#id2,#id3");
解决scheme4
因为当你改进时,正则expression式(从来没有实际使用过这些, 解决scheme一直是足够的,但你永远不知道!
// Matches all elements whose id takes the form editDialog-{one_or_more_integers} $('div').filter(function () {this.id.match(/editDialog\-\d+/)});
为所有div添加一个公共类。 例如添加foo到所有的div。
$('.foo').each(function () { $(this).dialog({ autoOpen: false, show: { effect: "blind", duration: 1000 }, hide: { effect: "explode", duration: 1000 } }); });
如果你所说的所有的div都以editDialog开始,那么你可以使用下面的select器:
$("div[id^='editDialog']")
或者,如果你更容易使用类select器
<div id="editDialog-0" class="editDialog">...</div> $(".editDialog")