0

我有一个要扩展/收缩的 div,但链接除外。我有以下代码,它有效但没有异常。确保 div“expandablediv”中的所有元素和区域导致与 jquery 展开/收缩的最有效方法是什么,元素除外。

$("#expandablediv").click(function () {
                if ($("#withinexpandlediv").is(":hidden")) {
                    $("#withinexpandlediv").fadeIn(50);
                }
                else {
                    $("#withinexpandlediv").fadeOut(50);
                }
            });

HTML 代码:

<div id="expandablediv" >
    <div class="ddImage">
        <img src="rightArrow.png" alt="Title">
    </div>
    <div class="ddText">
        Title
    </div>
    <div id="withinexpandlediv" >
        Text contains one or more <a href="mailto:email@links.com"> email links.</a>
    </div>
</div>
4

3 回答 3

3

如果您的意思是您不希望链接触发切换,请使用event.target.nodeName

        $("#expandablediv").click(function (e) {
            if (e.target.nodeName == "A") { return; }
            //if ($(e.target).is('a')) { return; } // also works

            if ($("#withinexpandlediv").is(":hidden")) {
                $("#withinexpandlediv").fadeIn(50);
            }
            else {
                $("#withinexpandlediv").fadeOut(50);
            }
        });

nodeName:http: //jsfiddle.net/m7vpk/

is():http: //jsfiddle.net/FQuzt/

于 2013-07-22T20:49:25.013 回答
2

就像是

if(!$('#expandablediv').children().has('a')){
    // handle expandsion/contraction here
}

检查此链接以获取更多详细信息:jQuery .has()

于 2013-07-22T20:48:24.163 回答
0

你可以试试这个:

$("#expandablediv").click(function () {
            if ($("#withinexpandlediv").is(":hidden")) {
                $("#withinexpandlediv").fadeIn(50);
            }
            else {
                $("#withinexpandlediv").fadeOut(50);
            }
}).find('a').click(function(e){
    e.stopPropagation();
});
于 2013-07-22T21:02:04.733 回答