【问题标题】:jquery live click event not working in IE8jquery live click事件在IE8中不起作用
【发布时间】:2012-12-05 10:08:11
【问题描述】:

我正在使用以下代码,它在我见过的所有浏览器中都能正常工作,IE9 很好,但后来我来到 IE8,它根本不起作用.. 仅供参考 #cal_popup_table 元素被动态添加到页面中..

        $("#cal_popup_table tbody tr td a").live('click', function() {
            $('.datepick-cmd-today').text(from_month + ' ' + from_year);

            var test = from_yeartest + '-' + from_monthtest + '-' + from_daytest;
            var test_new = test.split("-");
            var today = test_new[0] + '-' + test_new[1] + '-' + test_new[2];

            $("#arrival").val(today);
        });

任何人都可以解释为什么它可能无法正常工作,函数内的代码并不重要,因为简单的alert() 也不起作用.. click 事件根本不会触发

更新 - 这是插入页面的代码(修剪掉一些内容等)

<div id="cal_popup" class="datepick-popup" style="position: absolute; left: 901px; top: 219px; ">
<div class="datepick" style="width: 195px; ">
    <div class="datepick-nav">
        <a href="javascript:void(0)" title="Show the previous month" class="datepick-cmd datepick-cmd-prev  datepick-disabled">&lt;</a>
        <a href="javascript:void(0)" title="Show today's month" class="datepick-cmd datepick-cmd-today ">December 2012</a>
        <a href="javascript:void(0)" title="Show the next month" class="datepick-cmd datepick-cmd-next ">&gt;</a>
    </div>

    <div class="datepick-month-row">
        <div class="datepick-month">
            <table id="cal_popup_table">
                <tbody>
                    <tr>
                        <td>
                            <a href="javascript:void(0)" class="datepicker_link dp1354708800000   datepick-today datepick-highlight" title="Select Wednesday, Dec 5, 2012">5</a>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>  
</div>

【问题讨论】:

    标签: javascript jquery internet-explorer-8


    【解决方案1】:

    尝试删除tbody

    $("#cal_popup_table tr td a").live('click', function() {
    

    一些浏览器将&lt;tbody&gt; 添加到自动生成的表格中,但 IE 8 没有。

    这就是 JS 无法在 IE 8 中执行您的代码的原因。

    【讨论】:

    • 感谢您的帮助,但这似乎不需要改变任何东西,除了 IE8 之外任何东西都可以工作
    【解决方案2】:

    使用 on()

        $("#cal_popup_table").on('click', 'tr td a', function() {
            alert('a');
        });
    

    【讨论】:

      【解决方案3】:

      我只是 checked your code in ie8its working absolutely fine no problems whatsoever,我做了一些事情:http://jsfiddle.net/J8ysn/1/

      这是我试过的jQuery代码。

          $('<table border="1"><tbody><tr><td></td></tr></tbody></table>')
              .appendTo('body')
              .attr({"id":"cal_popup_table"});
      
          $('<a href="#">clik</a>').appendTo("#cal_popup_table tbody tr td");
      
      
          $("#cal_popup_table tbody tr td a").live('click', function() {
                alert('live clicked');
          });
      

      【讨论】:

      • 我不明白为什么我的那个不工作..一定是沿着这条线
      最近更新 更多