1

Google マップの描画マネージャーを使用しています。描画ツールのボタン バーに ID やクラス名を表示しないので、自分でやろうとしています。

最初に、以下が正常に機能する円ボタンを削除したいのですが、独自のボタンを追加したいので、親 div "gmnoprint" にクラス名を追加する必要がありますが、Google には同じクラス名を持つ約 5 つの div があります。丸ボタンが見つかった場所に追加したいだけです。

<div class=gmnoprint"></div>
<div class=gmnoprint"></div>
<div class=gmnoprint"></div>
<div class=gmnoprint">
    <div>
        <div> <== This is what I found in my search
            <span>
                <div>
                    <img></img>
                </div>
            </span>
        </div>
    </div>
</div>  

必要な要素を見つけて削除することはできますが、そのラッパー div にクラスを追加するのは少し難しいことがわかっています。

これは、ボタンを削除するために機能します

$(".gmnoprint").each(function(){
   $(this).find("[title='Draw a circle']").remove();
});

これは機能しません..クラスをすべての「.gmnoprint」divに追加するだけです

$(".gmnoprint").each(function(){
   $(this).find("[title='Draw a circle']").remove().parent().addClass("test");
});
4

3 に答える 3

2

remove()DOMから要素を削除し、DOMにまったく接続されていない独立したjqueryオブジェクトを返します。呼び出しparent() の呼び出しremove()は正しくなく、それが問題の原因である可能性があります。

ステートメントを次のように分割してみてください。

var toRemove = $(this).find("[title='Draw a circle']");
toRemove.parent().addClass("test");
toRemove.remove();
于 2012-12-01T13:46:07.170 に答える
0

jQueryinsertAfterを使用して、デフォルトのボタンの後にボタンを削除してから削除できます。

$(".gmnoprint").each(function(){
   var defBtn = $(this).find("[title='Draw a circle']");
   $('<button class="my-button" />').insertAfter(defBtn);
   defBtn.remove();
});

または、次のようにjQueryを使用afterします。

$(".gmnoprint").each(function(){
   $(this)
      .find("[title='Draw a circle']")
      .after($('<button class="my-button" />'))
      .remove();
});
于 2012-12-01T13:46:15.097 に答える
0

child selector要素をターゲットにするために使用できます

$(".gmnoprint > div > div").addClass('myClassName');

その時点で、 div 全体の html を置き換えるか、スパンを見つけて内部の html を置き換えることができます。要素のすべてのコンテンツを置き換えるため、html()使用する必要のないメソッドを使用するremove()

 $(".gmnoprint > div > div").addClass('myClassName').find('span').html('<newButton>');

API リファレンス : http://api.jquery.com/child-selector/

于 2012-12-01T13:49:44.660 に答える