2

ここにJSBinがあります:http://jsbin.com/ofusec/2/

DIV (カスタマイズまたはパーソナライズ) を開くと、機能は正常に動作し、"+" を切り捨てて "-" 記号に置き換えますが、ユーザーが DIV を閉じると、文字列が複製されて配置されます。

クロージングをオープニングと同じように動作させたい (切り詰めて最後の文字を置き換える)

コードは次のとおりです。

HTML:

<div id="customize" class="leftDiv">
    <span class="smallTitle"  onclick="toggle_expand('customizePort');">Customize Portfolio &nbsp;&nbsp;&nbsp;&nbsp; +</span><br />
    <div class="leftDivContent" id="customizePort">
    LAYOUT:<BR />
    NAVIGATION:<BR />
    BACKGROUND COLOR:<BR />
    FONT COLOR:<BR />
    </div>
</div>

<div id="personalize" class="leftDiv">
    <span class="smallTitle" onclick="toggle_expand('personalizePort');">Personalize Portfolio &nbsp;&nbsp; +</span><br />
    <div class="leftDivContent" id="personalizePort">
        HEADER IMAGE:<BR />
        ARTIST STATEMENT:<br />
        CONTACT INFORMATION:<br />
    </div>
</div>

ジャバスクリプト:

function toggle_expand(id){
    var e = document.getElementById(id);
    var text = $(e).siblings().text();
    if( $(e).css('display') === 'none' ){
        $(e).slideToggle('fast', function(){
            var newText = text.replace("+","-");
            $(e).siblings().text( newText );
        });
    } else {
        $(e).slideToggle('fast', function(){
            var newText = text.replace("-","+");
            $(e).siblings().text( newText );
        });
    }
}
4

3 に答える 3

3

これはあなたが説明する効果があるようです:

function toggle_expand(id){
    var e = document.getElementById(id);
    var text = $(e).siblings("span").text();
    if( $(e).css('display') === 'none' ){
        $(e).slideToggle('fast', function(){
            var newText = $(e).siblings().text( text.slice(0, -1)+"-" );
        });
    } else {
        $(e).slideToggle('fast', function(){
            text = $(e).siblings("span").text( text.slice(0, -1)+"+" );
        });
    }
}
于 2013-02-07T01:26:48.953 に答える
0

あなたのsiblingsセレクターには具体性がありません。ユーモラスな<br>ことに、同じテキストが間違って追加されていますが、ドロップダウン div が表示されると、最初は隠されています。

function toggle_expand(id) {
    var e = document.getElementById(id);
    var $title = $(e).siblings(".smallTitle");
    var text = $title.text();

関数の残りの部分では、$title代わりに を参照してください。$(e).siblings("span")

于 2013-02-07T01:30:42.653 に答える
0

regex小さな愛はどうですか?

function toggle_expand(id){
    var e = document.getElementById(id);
    var text = $(e).siblings("span").text();
    if( $(e).css('display') === 'none' ){
        $(e).slideToggle('fast', function(){
            var newText = $(e).siblings().text( text.replace(/\+/,'-'));
        });
    } else {
        $(e).slideToggle('fast', function(){
            text = $(e).siblings("span").text( text.replace(/-/,'+'));
        });
    }
}
于 2013-02-07T01:34:52.523 に答える