如何用jQuery替换父div的内容

时间:2010-12-13 19:25:00

标签: jquery parent

我有这个HTML代码:

<div id="ht_key" class="ht_all">
    <div class="ht_bottom">
        <div class="ht_bottom_p">
            <span class="ht_bottom_o">
                <a href="javascript:;" onclick="htrc('key');\">click</a>
            </span>
        </div>
    </div>
</div>

此代码可在第5-6页(或更多)中看到。 我希望从htrc函数替换#ht_key div与其他一些内容。 (“关键”在每种情况下都不同)。问题是如果在页面中有2个具有相同“键”的div,那么当htrc函数发生时,则只替换第一个#ht_key div。因此,我需要替换#ht_key div的内容,其中a(从中调用htrc函数)被单击,是否有任何方法可以替换其父div(具有id的父div)?

我已经尝试了父亲和最近但是没有一个返回结果。你有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

我的建议是将ht_key设为class而不是id

<div class="ht_key ht_all">

这样您的HTML就有效了。

或者更改onclick以通过this,并closest()最多ht_all

<a href="#" onclick="htrc(this);">click</a>

JS

htrc( el ) {
    $(el).closest('.ht_all');
    // ...
}

如果采用这种方法,我会为data-使用HTML5 ht_key属性:

<div data-key="somekey" class="ht_all">

如果你使用的是最新版本的jQuery,你可以这样做:

htrc( el ) {
    var $all = $(el).closest('.ht_all');
    var key = $all.data('key');
}

答案 1 :(得分:1)

我认为#ht_key实际上是一个锚的父级(在这种情况下,你在代码片段中缺少结束标记)。我会删除“onclick”并绑定事件处理程序,如下所示:

$("span.ht_bottom_o a").click(function(){$(this).closest(".ht_all").html(...)});