如果element有属性在jQuery中做其他事情

时间:2012-06-29 10:20:12

标签: jquery

我正在使用qTip插件为BOTH alt和title标签创建工具提示。这样做的原因是因为在我正在处理的应用程序中,我无法将图像上的所有alt标记转换为标题标记,因此必须同时使用这两个标记:

e.g。

$('*[title]').qtip({
        content: {
            attr: 'title'
        },
        hide: {
            fixed: false,
            event: 'click mouseleave'
        },
        position: {
            target: "mouse",
            adjust: {
                x: 20,
                y: 10,
                method: "flipinvert flipinvert"
            },
            container: false,
            viewport: true,
            at: "right center",
            my: "left center"
        },
        style: {
            classes: "ui-tooltip-tipsy",
            tip: {
                corner: false
            }
        }
    });

    $('img[alt]').qtip({
        content: {
            attr: 'alt'
        },
        hide: {
            fixed: false,
            event: 'click mouseleave'
        },
        position: {
            target: "mouse",
            adjust: {
                x: 20,
                y: 10,
                method: "flipinvert flipinvert"
            },
            container: false,
            viewport: true,
            at: "right center",
            my: "left center"
        },
        style: {
            classes: "ui-tooltip-tipsy",
            tip: {
                corner: false
            }
        }
    });

我遇到的问题是,如果我有一个标题包装图像的链接,我将得到两个不正确行为的工具提示。

我的想法是做一些逻辑检查,如果我悬停的元素有一个标题标签或alt标签,那么只做一个或另一个,而不是两个。

例如,如果<a href="#" title="Tooltip info"><img src="#" alt="Tooltip info"></a>那么在这种情况下它应该使用alt或title标签。

有人可以帮忙吗?感谢

示例:

$('a').hover(function() {

if($(this).attr('title')) {
// dont run the alt tag tooltip code
}
});

2 个答案:

答案 0 :(得分:3)

您可以使用以下选择器作为第一个

$('*[title]:not(:has([alt]))').qtip({.....

它将做的是,它会选择title属性的所有元素,这些元素没有任何具有alt属性的子元素。

答案 1 :(得分:1)

试试这个:

$('*[title]:not(:has([alt]))').qtip({
  // code
});

会在代码中过滤title并排除那些孩子的alt