2012-06-30 80 views
0

我试图通过jQuery在表上的td单元格上触发单击事件。我已经在不同的表中实现了行,没有任何问题。作为参考,该表格是一个montly日历,点击一个正方形将会提取当天的数据。jquery td单击事件

我无法启动该事件,因此我将代码分解为基本代码并将其放在自己的页面上,以确保没有任何干扰。在CSS中的表类是table.calendar和这里的代码:

$('table.calendar').delegate('td','click',function() { 
     alert('Success'); 
     var href = $(this).find("a").attr("href"); 
     if (href) { 
      window.location = href; 
     } 
    }); 

我也试过它作为.calendar没有成功。我已经确认该课程在桌面上是正确的,并且没有其他课程。我正在使用jquery 1.6

任何想法为什么事件没有解雇?

+1

你确定你尝试绑定事件之前的表被添加?你把你的代码包装在'$(document).ready(function ...'或'$(function ...'?什么东西让它等待dom加载? – andlrc

+0

@AndreasAL [delegate](http://api.jquery.com/delegate/)'将一个处理程序附加到与选择器匹配的所有元素的一个或多个事件,**现在或将来**,基于特定的一组根元素“。 – Jashwant

+0

@Jashwant ya ?? ...但是,如果在绑定事件后添加了表格(根元素),我就开始讨厌了。 – andlrc

回答

1

尝试在准备回调包装代码:

jQuery(function($) { 
    $('table.calendar').delegate('td','click',function() { 
      alert('Success'); 
      var href = $(this).find("a").attr("href"); 
      if (href) { 
       window.location = href; 
      } 
     }); 
}); 

如果不到风度的工作出现了,你table.calender加入异步大posibility。然后尝试:

$(document).deligate('table.calendar td', 'click', function() { 
    alert("Success!"); 
}); 

OR

$("table.calendar td").live('click', function() { 
    alert("Success!"); 
}); 

如果不到风度的工作你没有任何表包含任何tdcalender

+0

没有这些工作。我还修改了桌子上的班级,给它一个粉红色的背景,以便我100%确定它正确地击中了桌子。我认为我没有100%理解td点击甚至是如何工作的? –

+0

@JonLeach如果你发布一个例子和一些HTML我可以帮你。 – andlrc

0

这里是原始代码。请注意,我使用的是VS2010,因此有些代码来自那里。

<form method="post" action="WebForm1.aspx" id="form1"> 
//
<script type="text/javascript"> 



    jQuery(function ($) { 

     $('table.calendar').delegate('td', 'click', function() { 

      alert('Success'); 

      var href = $(this).find("a").attr("href"); 

      if (href) { 

       window.location = href; 

      } 

     }); 

    }); 

<div> 

<table id="tblCalendar" class="calendar" rules="all" border="1" style="width:70%;float:right;border-width:2px;border-color:Gray"> 

<tr style="border-width:2px;border-style:solid;"> 

    <th><a id="LinkBack" href="javascript:__doPostBack(&#39;LinkBack&#39;,&#39;&#39;)" style="font-size:Large;"><<</a></th><th align="center" colspan="1"><span id="CalendarTitle" style="font-size:Large;"></span></th><th align="center"><a id="LinkForward" href="javascript:__doPostBack(&#39;LinkForward&#39;,&#39;&#39;)" style="font-size:Large;">>></a></th> 

</tr><tr> 

    <td class="Regular">3</td><td>4</td><td>5</td> 

</tr> 

</div> 

</form> 

+0

注意我也尝试过使用.Regular类 –