2016-03-04 68 views
0

我建設用以下代碼網頁:jQuery的使用Javascript - 如果語句不正確評估

function change() 
{ 
    if($(this).hasClass("rosaLC")); 
    { 
     $(this).toggleClass('rosaLCb'); 
    } 
    if ($(this).hasClass('rosaBC')); 
    { 
     $(this).toggleClass('rosaBCb'); 
    } 
} 

上的HTML,觸發此功能的按鈕是如下:

<div class="row"> 
    <article class="columnLeft"> 
     <div class=rosa>  
      <button onclick="playVid('crux');change.call(this)" class=rosaLC style="top:28px; left:75px;" ></button> 
      <button onclick="playVid('gloria');change.call(this)" class=rosaBC style="top:460px; right:131px;"></button> 
     </div> 
    </article> 
</div> 

但是,當調用函數change()時,if語句沒有正確計算,也就是說,單擊類rosaLC的<button>時,函數change()添加了它的兩個類rosaLCb和rosaBCb,並且原始類rosaLC會不會來回切換,該按鈕仍然具有3個類別: <button onclick="playVid('crux');change.call(this)" class="rosaLC rosaLCb rosaBCb" style="top:20px; left:86px;"></button>

有什麼不對?

作爲一種變通方法我在兩個功能拆分功能:

function change (thisObj) 
{ 
    $(thisObj).toggleClass('rosaLC rosaLCb'); 

} 
function change1 (thisObj) 
{ 
    $(thisObj).toggleClass('rosaBC rosaBCb'); 
} 

,並更改HTML button

<button onclick="playVid('gloria');change1(this)" class=rosaBC style="top:36px; right:58px;"></button> 
<button onclick="playVid('crux');change(this)" class=rosaLC style="top:28px; left:75px;" ></button> 

這僅僅是工作,我希望這樣,但我仍然不瞭解原代碼有什麼問題,主要涉及到if聲明。

回答

1

您還沒有確定做什麼用

切換它只是做到這一點

function change() 
{ 
     $(this).toggleClass('rosaLC rosaLCb'); 
     $(this).toggleClass('rosaBC rosaBCb'); 
} 

另外,通過元素對象,而不是使用this從那時起,它成爲可重複使用超過按鈕點擊之外的其他用途(一些另一元件上,其他事件)

function change (thisObj) 
{ 
     $(thisObj).toggleClass('rosaLC rosaLCb'); 
     $(thisObj).toggleClass('rosaBC rosaBCb'); 
} 

並調用它作爲

<button onclick="playVid('crux');change(this)" class=rosaLC style="top:28px; left:75px;" ></button> 
+0

'change.call(this)'不會期望函數明確地接收'this'。我錯誤地在看到OP的代碼之前發佈了一個答案 –

+0

@RajaprabhuAravindasamy嗯,我已經做出了改變。我想知道爲什麼你刪除了你的。 – gurvinder372

+0

@ gurvinder372我只是嘗試你的解決方案,但仍然將所有類添加到我點擊的任何按鈕。 –