我通常可以使用类似
之类的东西找到事件目标的父级或适当的兄弟$(".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中添加一个包装器,然后查找包装器的父包。但这也不起作用。有关如何实现这一目标的任何线索?
答案 0 :(得分:0)
好的,最后我想我得到了一个合理的答案。这可能不会在技术演讲中表达,但希望你会得到漂移。
这不是一个完美的答案,因为你必须知道或做出关于dom的假设。 但它确实对我有用,因为我的dom结构在这种情况下是固定的。
我不是在找tagNames我正在寻找父母和兄弟姐妹的班级。因此,如果需要更通用的东西,您将不得不进一步完善它。
使用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'});
我想不出如何找到兄弟姐妹,但我可能会从找到的父母那里找到工作。
如果我找到了办法,我会报告。