jquery - 是否可以找到 SVGTSpanElement 的父级或下一个/上一个同级

标签 jquery jquery-svg

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

$(".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 添加一个包装器,然后查找该包装器的父级。但这也不起作用。关于如何实现这一目标有任何线索吗?

最佳答案

好吧,我想我终于得到了一个合理的答案。这可能不会用技术语言来表达,但希望您能明白其中的意思。

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

我不是在寻找标签名称,而是在寻找 parent 和 sibling 的类(class)。因此,如果需要更通用的东西,您就必须进一步完善它。

使用parentUntil($(".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'});

我不知道如何找到 sibling ,但我可能会从找到的 parent 那里开始工作。

如果我找到办法做到这一点,我会报告。

关于jquery - 是否可以找到 SVGTSpanElement 的父级或下一个/上一个同级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070579/

相关文章:

javascript - 如何将仅 css 的 megamenu 转换为基于 jquery

javascript - SVG 和与 javascript/jQuery 的交叉引用

javascript - 如何使用鼠标坐标在拖动时画线

svg - 使用 jQuery 获取 SVG 路径的边界框

html - SVG 加载事件过早调用?

ASP.Net Ajax $find() Jquery 等效项

javascript - 完整日历在事件呈现在日历上之前触发 ajax 调用

jquery - 覆盖容器应在单击时关闭,但如果单击 anchor 或输入子项则不会关闭

javascript - 如何使用 momentjs 和 javascript 将 maxDate 设置为日期选择器

jquery - SVG 动画在 IE9/IE10 中不工作,但在 Firefox 和 Chrome 中工作