【问题标题】:Is it possible to find the parent or next / prev sibling of an SVGTSpanElement是否可以找到 SVGTSpanElement 的父级或下一个/上一个兄弟级
【发布时间】:2012-10-25 23:47:59
【问题描述】:

我通常可以使用类似的东西找到事件目标的父级或适当的兄弟级

$(".occupancy").bind("click", function(event){
    day = $(event.target).parent().attr("class");
    // more stuff
});

但是如果事件是在一个 svg 对象上触发的,例如

$(".booked").on("click", function(event) {
    day = $(event.target).parent().attr("class");
    $("#cancellation_Form_Wrapper").css("visibility","visible");
    $("#cancellation_Form_Wrapper").change();
}).svg({loadURL: '../_public/_icons/booked.svg'});

父级未定义。

我很欣赏 svgdom 与普通 DOM 不同,并实现了 jquery.svgdom.min.js。但我对 SVG 的内部 DOM 不感兴趣,我对 SVG 在 DOM 中的位置感兴趣。

我尝试将包装器添加到 svgdom,然后查找包装器的父级。但这也没有用。关于如何实现这一点的任何线索?

【问题讨论】:

    标签: jquery jquery-svg


    【解决方案1】:

    好的,我想我终于得到了一个合理的答案。这可能不会用技术语言表达,但希望你能理解。

    这不是一个完美的答案,因为您必须了解或对 dom 做出假设。 但它确实对我有用,因为我的 dom 结构在这种情况下是固定的。

    我不是在寻找标签名,而是在寻找父母和兄弟姐妹的班级。因此,如果需要更通用的内容,则必须进一步完善。

    使用 parentsUntil($(".wrapper").parent() 通过它的类找到你正在寻找的元素 你需要这种格式,因为 parentsUnitl() 找不到自己。映射它以创建一个字符串,然后使用 split 将字符串转换为数组 找到数组中的最后一个元素并且你有父元素。

     $('.svgload').on('click', function(event) {
             alert('clicked svg new');
             var parentElements = $(event.target).parentsUntil($(".wrapper").parent())
                 .map(function () { 
                     return this.className; 
                 })
                 .get().join(", ");
             alert(parentElements);
             parentsArray = parentElements.split(",");
             alert(parentsArray.pop());
     }).svg({loadURL: '../_public/_icons/booked.svg'});
    

    我想不出如何找到兄弟姐妹,但我可能会从找到的父母开始。

    如果我找到方法,我会报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多