jQuery父元素问题

发布于 2024-11-14 22:48:15 字数 894 浏览 1 评论 0原文

为了尝试定位特定的 div,我使用以下代码:

function popupBox($area){
        //$mainBox  =   $(document).createElement('div').attr('id', 'mainBox');
        $mainBox    =   $('<div></div>').attr('id', 'mainBox');
        $($mainBox).text('main box responding');

        $parent =   $('div#custom-page-node-block-output-right div.views-row').parent( $($area) );
        $($parent).addClass('parent');

}

唯一的问题是有 2 个 div 具有类 div#custom-page-node-block-output-right div.views-row< /强>。 不过,由于我要查找的父元素的源元素位于两个 div 之一内,因此我应该只得到一个元素作为响应,但它会返回两个元素。

您可以在 http://test5omniforce.co.uk/node/3 查看实际问题(在 Firefox 中查看效果最佳)。只需将鼠标悬停在任一平面图上的任何蓝色房间上即可。

这个想法是在鼠标悬停的任何房间的直接父级上获得绿色背景,但我两者都得到了。显然是因为我使用类而不是 ID,但我不能在此解决方案中使用 ID。

谁能建议是否有办法通过调整我的代码来达到预期的效果?

谢谢

In an attempt to target a specific div, I am using the following code:

function popupBox($area){
        //$mainBox  =   $(document).createElement('div').attr('id', 'mainBox');
        $mainBox    =   $('<div></div>').attr('id', 'mainBox');
        $($mainBox).text('main box responding');

        $parent =   $('div#custom-page-node-block-output-right div.views-row').parent( $($area) );
        $($parent).addClass('parent');

}

The only issue is there are 2 divs with the class div#custom-page-node-block-output-right div.views-row.
I though since the source element whose parent I am looking for is within one of the two divs, I should only get a single element in response but it's returning both.

You can see the issue in action at http://test5omniforce.co.uk/node/3 (best viewed in Firefox). Just hover your mouse over any of the blue-colored rooms on either floor plan.

The idea is to get a green background over the immediate parent of any room over which the mouse is hovering but I get both. It's obviously because I am using classes instead of IDs but I can't use IDs in this solution.

Can anyone advice if there is a way to achieve the desired effect with adjustments to my code?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

电影里的梦 2024-11-21 22:48:15

您是否尝试过:

$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).first();

或:

$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).last();

其中之一可能有效,但我同意约翰的观点,id 应该是唯一的。

这是一个 jsfiddle 示例: http://jsfiddle.net/nxGjA/2/

Have you tried:

$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).first();

or:

$('div#custom-page-node-block-output-right div.views-row').parent( $($area) ).last();

One or the other might work but I agree with John, the id's should be unique.

Here is a jsfiddle example: http://jsfiddle.net/nxGjA/2/

烂柯人 2024-11-21 22:48:15
$parent = $($area).parents('div.views-row');
$parent.addClass('parent');

注意:如果元素是 jQuery 元素(就像 $parent 一样,因为它是从 jQuery 调用返回的),则不必将其包装在 $() 中。另请注意,$area 不是 jQuery 对象,只是传入的 HTML 元素。

$parent = $($area).parents('div.views-row');
$parent.addClass('parent');

Note: if the element is a jQuery element (like $parent is, since it is returned from a jQuery call,) you do not have to wrap it in $(). Also note that $area is not a jQuery object, just a passed in HTML element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文