3

私は通常、次のようなものを使用して、イベントターゲットの親または適切な兄弟を見つけることができます

$(".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にラッパーを追加してから、ラッパーの親を探しました。しかし、それもうまくいきませんでした。これをどのように達成できるかについての手がかりはありますか?

4

1 に答える 1

0

OKついに私は合理的な答えを得たと思います。これはおそらく技術的な話では表現されないでしょうが、うまくいけばあなたはドリフトを得るでしょう。

あなたはdomについて知っているか、仮定をしなければならないので、それは完璧な答えではありません。しかし、この場合、私のdom構造が修正されているので、それは私にとってはうまくいきます。

私は親と兄弟のクラスを探しているtagNamesを探していません。したがって、より一般的なものが必要な場合は、これをさらに改良する必要があります。

親が見つからないため、parentsUntil($( "。wrapper")。parent()を使用して、クラスで探している要素を検索します。これをマップして文字列を作成し、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'});

私は兄弟を見つける方法を考えることができませんが、私はおそらく見つけられた親から仕事をするでしょう。

これを行う方法を見つけたら、報告します。

于 2012-10-25T15:47:59.420 に答える