【问题标题】:how do I target with jquery a parent div if a src has an alt?如果 src 有 alt,我如何使用 jquery 定位父 div?
【发布时间】:2013-06-19 13:48:51
【问题描述】:

我有以下带有 img src 和 alt 的 div:

<div class="slick-cell"><span style="color: red;">99</span>
<img src="images/global.images.arrow_down_dark.png" alt="Downward">
</div>

如果 src 的 alt 等于 Downward,我如何向父 DIV 添加一个“Down”类(紧跟在 slick-cell 类之后)?

提前感谢您的帮助

类似的东西

if ($(".src").hasAlt("Downward")) {

        $(".slick-cell").addClass(".Down");
    }

【问题讨论】:

    标签: jquery targeting


    【解决方案1】:
    $("img[alt='Downward']").parent().addClass("Down");
    

    奖金小提琴:http://jsfiddle.net/balintbako/5ZKhv/

    【讨论】:

    • 关于 SO 的每个答案都应该附带一个奖金小提琴! :)
    • 我在 fiddle 中尝试过,但它没有在 slick-cell 之后添加 Down 类
    • 确实如此,您可以看到替代文本是蓝色的。你可以用firebug检查它,例如...(左上角的html不会改变)
    【解决方案2】:

    这会一次修改页面上的所有图像:

    $("img[alt='Downward']").closest(".slick-cell").addClass("Down");
    

    或者(jQuery 是灵活的):

    $(".slick-cell").has("img[alt='Downward']").addClass("Down");
    

    【讨论】:

    • 当 OP 正在寻找父 div 时,为什么 .closest(及其较慢的性能)超过 .parent()
    • @DerekHenderson .closest() 怎么比.parent() 慢一点?但是如果页面结构因为布局需要而发生如此微小的变化,.parent() 将是错误的,但.closest() 很可能仍然是正确的。 (无论如何,如果您告诉我/某人“X 比 Y 慢”,请确保它位于重要的区域。当我们谈论遍历几个(数百个)DOM 节点时,速度快 10 毫秒或慢 10 毫秒...这不是一个重要的领域。)
    • 您在编辑后添加的位会让我满意。你是对的,如果结构发生变化,那么parent() 是不够的。如果您的回复只是简单地表明您正在防止任何此类可能的未来变化,我就不会为小提琴而烦恼。
    • 查看我的结果(请参阅“Chrome 29.0.1535”).parent()closest() 相当。无论如何,我们谈论的是每秒完成数万次操作。不值得考虑。
    • 我倾向于尽可能将我的 jQuery 代码与确切的 HTML 结构分离。如果您有(“有”)更改 JS 代码以及对页面结构所做的每一个微小的更改,那么恕我直言,您没有使用 jQuery。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多