jQuery第二次点击不起作用

时间:2014-10-31 10:12:01

标签: javascript jquery html

我的HTML结构

<tr class="">
<td class="day">20</td>
<td class="day">21</td>
<td class="day">22</td>
<td class="day">23</td>
<td class="day">24</td>
<td class="disabled day">25</td>
<td class="disabled day">26</td>
</tr>

<tr class="">
<td class="day">13</td>
<td class="day">14</td>
<td class="day">15</td>
<td class="day">16</td>
<td class="day">17</td>
<td class="disabled day">18</td>
<td class="disabled day">19</td>
</tr>

jQuery脚本

<script>
$(function(){
        $(".day").click(function() {
        alert('Test');
        var first = $(this).closest('tr').children('td:first').text();
        var last = $(this).closest('tr').children('td:last').text();
        $("span#date-range").append( "(Oct "+first+"- Oct "+last+")" );
    });
});
</script>

在页面加载时,当用户点击任何<td>时,它会显示正确的值,但如果用户再次单击它,则不会执行任何操作。点击后,HTML结构保持不变,但在Firebug Console中看到时会显示。

首先点击

enter image description here

首次点击后,即后续点击

enter image description here

如果上述内容发生变化,如何在<td>上启用多次点击。

感谢。

2 个答案:

答案 0 :(得分:1)

你的html表应该有效,它应该有效。请参阅附件的工作片段:

$(function(){
        $(".day").click(function() {
        alert('Test');
        var first = $(this).closest('tr').children('td:first').text();
        var last = $(this).closest('tr').children('td:last').text();
        $("span#date-range").append( "(Oct "+first+"- Oct "+last+")" );
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<table>
<tr class="">
<td class="day">20</td>
<td class="day">21</td>
<td class="day">22</td>
<td class="day">23</td>
<td class="day">24</td>
<td class="disabled day">25</td>
<td class="disabled day">26</td>
</tr>
</table>
<tr class="">
<td class="day">13</td>
<td class="day">14</td>
<td class="day">15</td>
<td class="day">16</td>
<td class="day">17</td>
<td class="disabled day">18</td>
<td class="disabled day">19</td>
</tr>
</table>

答案 1 :(得分:0)

我认为这个问题可以通过使用.live或.on方法

来解决
$(function(){
        $(document).on('click','.day',function() {
        alert('Test');
        var first = $(this).closest('tr').children('td:first').text();
        var last = $(this).closest('tr').children('td:last').text();
        $("span#date-range").append( "(Oct "+first+"- Oct "+last+")" );
    });
});