2010-08-28 94 views
2

我想从几个选择只有一个类,条件是选定的类有任何div-descendant的ID为"#exampleId"JQuery:从一个字符串中删除字符/选择

我觉得这样的事情可以工作,但是事实并非如此:

$(".myClass").has(div).attr("id","#exampleId"). 

第二个问题:我有摆脱第一哈希“#”的。 因为字符串(#exampleId)已经动态生成... 它看起来是这样的:

var myString = "#exampleId" 

而下面的方法没有奏效:提前

myString.replace('#',''); 

感谢

回答

0

您只需在选择器中传递has()的ID即可。无需删除#

$(".myClass").has("div#exampleId") 

甚至做一个选择:

$(".myClass:has(div#exampleId)") 
+0

谢谢,解决了! 但只是为了好奇: 特定的字符串替换工作会像上面所述的方法吗? – algro 2010-08-28 13:32:45

+0

algro:是的,这将删除所有'#'字符。请记住将结果存储在某处,因为'replace'不会修改字符串本身,它会返回修改过的字符串。 – 2010-08-28 18:55:48

1

你已经接受了答案,但无论如何,我会抛出这样一个在那里。

如果你有比页面上的几个元素.myClass多,它很可能是更有效的选择#exampleId第一,然后使用parents()穿越到第一.myClass

$('#exampleId').parents('.myClass:first'); 

或者,如果ID是一个变量,这样做:

var myString = "#exampleId"; 

$(myString).parents('.myClass:first'); 

这些会给你第一父母有.myClass#exampleId的。

如果您愿意,也可以使用.closest('.myClass')