jQuery .next选择器忽略生成的div并定位下一个div - 我如何定位兄弟div

时间:2011-09-27 02:47:56

标签: jquery

我正在尝试定位由jQuery插件生成的div。我一直试图使用 .next 来做这件事,但没有运气。

更新:请注意,点击后会触发此生成的div

* 更新:这是代码http://jsfiddle.net/clintongreen/PAbAH/1/

的小提琴

问题是,下一个选择器忽略生成的div并将目标指向下一个div。我知道这不起作用,因为生成的div在技术上不是兄弟。

有没有人知道如何定位这个难以捉摸的生成div。我不能使用css,因为我只想在从某些链接生成它时隐藏它。

代码示例

//Script
$("div.region_marker").next("div.bubble").hide();

//HTML
<div class="region_marker">Region Marker text</div> //this is how I am targeting the generated div
<div class="bubble">Bubble text</div> //div generated by jQuery, not hard coded, this is ignored by .next
<div class="map_marker">Map Marker text</div> //random div, this is the one that .next targets
<div class="map_marker">Map Marker text</div> //random div

我愿意接受你的任何建议,谢谢你们

2 个答案:

答案 0 :(得分:1)

如果是小孩,请使用.find()。如果它是兄弟姐妹和下一个兄弟姐妹,请使用.next()。如果它是下一个兄弟,而不是下一个兄弟,那么请使用.nextAll()

在你的代码中,这将获得由jQuery生成的“Bubble text”div:

$("div.region_marker").next();

这将获得第一个Map Marker文本div:

$("div.region_marker").nextAll(".map_marker").first();

如果你真的想要隐藏第一个.bubble兄弟,那么你可以使用它:

$("div.region_marker").nextAll(".bubble").first().hide();

最后一个工作的唯一原因,而你的代码不会是标签的顺序与你认为不完全相同。

P.S。除非您尝试消除可能具有该类的其他类型的标记,否则不必使用div.bubblediv.region_marker等选择器。在您的情况下,您可以使用.region_marker.bubble并保存选择器引擎。

答案 1 :(得分:0)

谢谢我让它使用:

$(“div.region_marker”)。点击(function(){$(this).next(“。bubble”)。hide();});

现在使用click函数同时触发它,传统的方法无效,因为我在div.bubble加载之前运行了这些函数。