2014-04-05 56 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。谢谢。 –