2013-02-08 2 views
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); 
} 
+0

같은 코드를 시도는 꽤 STANDART JQuery와 API를, 대답이다. http://stackoverflow.com/a/3337649/1347177 – Felix

+0

@tuan answer에 대한 의견이 없습니다. 귀하의 질문은 명확하지 않습니다. 편집하십시오. ** 당신은 무엇을 원하나요 ** 정확하게 **? 그리고 당신은'submit' 버튼을 만들고 있습니다. 왜? 그들은 뭔가를 제출하고 있습니까? 나는 당신이 그들을 클릭 할 때 색깔을 바꾸고 싶어하기 때문에 그렇지 않다. 도움이 필요하면 더 명확히하십시오. – ByScripts

답변

2

당신은 당신의 버튼에 클릭 이벤트 리스너가 필요합니다. 버튼을 클릭 할 때마다 toggleClass()는 일반활성 사이에서 전환되며 각각 다른 배경색을 포함합니다.

귀하의 의견에 따르면, 데이터베이스의 값에서이 버튼을 동적으로 생성하므로 버튼의 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; 
} 

자바 스크립트 :

$(document).ready(function() { 

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

예 :,210

+0

와 Rohan은 내 토글 버튼이 데이터베이스에서 onLoad로 생성되었다는 사실을 알려 드려 죄송합니다. 내 주요 문제는 내가 어떻게 각각의 ID를 얻을 수있는 모든 버튼을 created.so 내 CCS 페이지 토글 버튼에 대한 그 ID 속성을 사용할 수 있습니다. –

+0

@ByScripts 내가 토글 버튼을 만드는 자바 스크립트 페이지가 페이지 로드,하지만 버튼의 ID가 내 데이터베이스 테이블의 열 이름이기 때문에 지금은 버튼을 독립적으로 사용할 수 없습니다. 그래서 나는 그것을 미리 알 수 없다. 그래서 나는 각 버튼에 메서드 나 함수를 할당 할 수 없다. 자세한 내용은 내가 업로드 한 코드를 확인하십시오. –

+0

귀하의 의견에 답하기 위해 제 답변을 업데이트했습니다. @ByScripts가 제안했듯이, 원래 질문을 업데이트해야 의견에 쓴 내용이 포함되어야합니다. 귀하의 원래 질문은 명확하지 않으며 개선 될 수 있습니다. 이것은 유사한 질문을 가진 다른 사람들을 도울 것이고, 답을 더 쉽게 찾을 수 있습니다. 말할 것도없이, 다른 사람들이 귀하의 질문에 더 잘 답변 할 수 있도록 도울 것입니다. – Tuan

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); 
} 
+0

정말 대단히 감사합니다, 그것은 완벽하게 작동합니다, 당신은 별 이니까 –

+0

환영합니다 ... @C_Major –

관련 문제