2

親要素のクラスを削除しようとして、このJavaScriptを取得しました:

$(this).parents(".box").removeClass("expanded");

このhtmlで:

<div class="box trx">
<a href="javascript:;" class="open-content"><?php the_post_thumbnail('thumbnail'); ?></a>
<div class="expandable">
    <?php the_content(); ?>
    <span class="simple">
        <a class="cunload" href="javascript:;">Close</a>
    </span>
</div>
</div>

残念ながら、これは今のところうまくいきません。次のようないくつかのテストを行いました。

$(this).parents(".box").removeClass("trx");

$(this).parents(".box").addClass("exd");

それはすべて動作します。wordpressサイトでjQuery 1.6.2jQuery masonryを使用しています。ここにライブデモがあり、すべてが機能している (機能していない) ことを確認できます。基本的には機能しますが、クラスが から削除されていないという事実により、とそのコンテンツがすぐに再開されます。クラスを削除しない理由についてかなり混乱しています。divdiv.expanded

編集:ドキュメントがロードされたときにクラスがまだ存在することを理解しました。写真をクリックすると後で追加されるので、削除の問題はこれからだと思います。誤解を招く説明で申し訳ありません。

4

4 に答える 4

2

要素にクリックハンドラーがあります.box

その中には、要素のクリックハンドラーがあります.cunload

は両方の要素.cunloadにネストされているため、ボタンを押すとクリックイベントを受け取り、再び開きます。(DOM階層をバブリングするイベントのため.boxclose

.cunloadハンドラーをに変更します

$('.cunload').click(function(e){
            e.stopPropagation();
            restoreBoxes();
            $(this).parents(".box").removeClass("expanded");
});
于 2011-10-20T23:37:23.073 に答える
0

多分これはうまくいくでしょう:

$(this).parents(".box").filter(".expanded").removeClass("expanded");
于 2011-10-20T23:36:29.020 に答える
0

このコードを使用する場合:

$(".cunload").click(function() {
    $(this).parents(".box").removeClass("trx");
});

このHTMLの場合:

<div class="box trx">
<div class="expandable">
    <span class="simple">
        <a class="cunload" href="#">Close</a>
    </span>
</div>
</div>

次に、設計どおりに機能しているように見えます。ここで機能することがわかります:http: //jsfiddle.net/jfriend00/Djjuz/trx閉じるリンクをクリックして、クラスが削除されると背景色が変わることを確認します。

したがって、コードには、開示していない他の何かがあり、それが機能しないようにする必要があります。関数をトリガーするために使用する正確なコードを含めてください。おそらく、何をしようとしているのか、何が起こっているのか、何が起こっていないのかをよりよく説明してください。

作業ページへのリンクを使用する予定の場合は、関連するコードがどこにあるか(そのページには多くのJSファイルがあります)、クリックした内容と期待される結果を説明してください。これまでのところ、何かが機能しないと言っただけですが、正確に機能しないもの、それをトリガーするために使用しているコード、および問題を再現する方法を理解するための十分なコンテキストが与えられていません。自分で問題を参照してください。質の高い支援が必要な場合は、十分な情報を提供して、ここで自分自身を支援する必要があります。

また、セレクターを.parents("selector")メソッドに渡すと、そのセレクターに一致する親のみに操作が制限されることに気づいていますか?したがって、。.parents(".box")を持つ親オブジェクトに対してのみ動作しますclass"box"

于 2011-10-20T23:40:12.870 に答える
0

うまくいくと思いますが、閉じるボタンをクリックすると、スクリプトによって男の子が再び展開されます。closeイベントハンドラー関数のヘッダーを次のように変更する必要があります。

function(event) {
    event.stopPropagation();
    [...]

同じクリックイベントがドキュメント階層をバブルアップできないようにします。

于 2011-10-20T23:41:33.920 に答える