2014-04-05 54 views
0

單擊事件其中的一個我有2種功能的onclick是這樣的:兩個函數的onclick,裏面的jQuery

<td ... onClick='clickedTD();counterFunction();questionsClick("+json_q[i].id+");' ... </td>"; 

當我點擊它,我questionsClick()函數的作品,但我clickedTD()函數可以使用第二次點擊。

clickedTD:

function clickedTD() 
{ 
$(".questionsClass").click(function() 
{ 
    $(".questionsClass").css("background-color","#eee"); 
    $(".questionsClass").css("color","black"); 

    $(this).css("background-color","#5bc0de"); 
    $(this).css("color","white"); 
}); 
} 

你有任何想法,爲什麼?

+1

因爲你'clickedTD ()'正在創建一個函數來處理點擊。 –

+0

那麼我應該如何解決這個問題? –

+1

我建議丟棄內聯事件處理程序,如'

回答

0

變化,其功能是這樣的:

function clickedTD(){ 
    $(".questionsClass").css("background-color","#eee"); 
    $(".questionsClass").css("color","black"); 

    $(this).css("background-color","#5bc0de"); 
    $(this).css("color","white"); 
} 

它不工作的原因是,此功能是增加一個點擊事件的回調被點擊的類時,將觸發。這意味着第一個點擊之後的所有點擊都會產生期望的結果。

或者,您可以添加此代碼並從onclick屬性中刪除函數和函數調用。

$(".questionsClass").click(function(){ 
    $(".questionsClass").css("background-color","#eee"); 
    $(".questionsClass").css("color","black"); 

    $(this).css("background-color","#5bc0de"); 
    $(this).css("color","white"); 
}); 
+1

它是有道理的:D。謝謝 –

0

真的,你只需要一個功能附加到Click事件處理程序 - 這裏是我會怎麼處理它:

<table> 
    <tr> 
     <td class="questionsClass" data-question-id="1">This is my Row</td> 
    </tr> 
    <tr> 
     <td class="questionsClass" data-question-id="2">This is my Row</td> 
    </tr> 
    <tr> 
     <td class="questionsClass" data-question-id="3">This is my Row</td> 
    </tr> 
    <tr> 
     <td class="questionsClass" data-question-id="4">This is my Row</td> 
    </tr> 
    <tr> 
     <td class="questionsClass" data-question-id="5">This is my Row</td> 
    </tr> 
    <tr> 
     <td class="questionsClass" data-question-id="6">This is my Row</td> 
    </tr> 
</table> 

$(".questionsClass").on('click', function(event){ 

    event.preventDefault(); 

    var $this   = $(this), 
     dQuestionID = $this.attr('data-question-id');  

     alert(dQuestionID); 
    $(".questionsClass").css("background-color","#eee").css("color","black"); 

    $this.css("background-color","#5bc0de").css("color","white"); 

}); 

這裏有一個快速的jsfiddle: http://jsfiddle.net/sbritton/HEZeB/1/

+0

它與@ Ryan的回答合作:D。謝謝。 –