1

私は助けが必要です :

トグルボタンをクリックすると問題が発生し、背景色を変更したいのですが、もう一度クリックすると元の背景色に戻る必要があります。あなたの助けは非常に高く評価されます。

function createButtons(tbID, tbClass, tbType, tbValue, onClick) {
    return '\n<input ' 
            + (tbID ? ' id=\'' + tbID + '\'' : '')
            + (tbClass ? ' class=\'' + tbClass + '\'' : '')
            + (tbType ? ' type=\'' + tbType + '\'' : '')
            + (tbValue ? ' value=\'' + tbValue + '\'' : '')
            + (onClick ? ' onclick=\'' + onClick + '\'' : '')
            + '>';
}
function DisplayButtons(cableData) {
    var newContent = '';
    $.each(cableData,

    function (i, item) {
        function toggle() {
            $(this).clicked ? $("#tb").addClass("btnColor") : $(this).removeClass("btnColor");
            $("#tb").toggleClass("btnColorR");
        }
        newContent += createButtons("tb" + item.CommonCable, null, "submit", item.CommonCable,
            ' alert("clicked")');
    });
    $("#Categories").html(newContent);
}
4

2 に答える 2

2

ボタンにはクリック イベント リスナーが必要です。ボタンがクリックされるたびに、 toggleClass() は、それぞれ異なる背景色を含むクラスnormalactiveの間で切り替わります。

あなたのコメントに基づいて、これらのボタンをデータベース内の値から動的に作成しているように見えるため、ボタンの ID を事前に知ることはできません。このような状況では、特定のボタン (id を参照) のクリック イベント リスナーを作成する代わりに、ページ上のすべてのボタンのイベントを作成します$('input[type=button]').click(function () {...

HTML:

<!-- 
    These buttons were generated dynamically from values stored in a database 
    I won't know their ids
-->
<input type="button" name="btn_1_from_db" value="Toggle Color1" />    
<input type="button" name="btn_2_from_db" value="Toggle Color2" /> 
<input type="button" name="btn_3_from_db" value="Toggle Color3" /> 
<input type="button" name="btn_4_from_db" value="Toggle Color4" /> 

<div id="target" class="normal">
   My color will change
</div>

CSS

.normal {
    background-color: green;
}

.active {
   background-color: red;
}

Javascript:

$(document).ready(function () {

    // If any button is clicked, toggle its assigned class (changes the color)
    $('input[type=button]').click(function () {
        $('#target').toggleClass('active');
    });
});

例: http://jsfiddle.net/EkAAh/

于 2013-02-08T07:49:39.417 に答える
0

次のようなコードを試してください

function createButtons(tbID, tbClass, tbType, tbValue, onClick) {
    return '\n<input ' 
            + (tbID ? ' id=\'' + tbID + '\'' : '')
            + (tbClass ? ' class=\'' + tbClass + '\'' : '')
            + (tbType ? ' type=\'' + tbType + '\'' : '')
            + (tbValue ? ' value=\'' + tbValue + '\'' : '')
            + (onClick ? ' onclick=\'toggle(this);' + onClick + '\'' : '')
            + '>';
}
function toggle(ths) {
    $(ths).toggleClass("btnColor");
    $("#tb").toggleClass("btnColorR");
}
function DisplayButtons(cableData) {
    var newContent = '';
    $.each(cableData,

    function (i, item) {
        newContent += createButtons("tb" + item.CommonCable, null, "submit", item.CommonCable,
            ' alert("clicked")');
    });
    $("#Categories").html(newContent);
}
于 2013-02-08T07:51:38.900 に答える