【问题标题】:on click not working in jquery 1.9.1单击在 jquery 1.9.1 中不起作用
【发布时间】:2013-07-26 18:07:24
【问题描述】:

我有下面的分页代码,它在 jquery/1.4.2 中完美运行

<script type="text/javascript">
 $(document).ready(function () {
    function loading_show() {
        $('#loading').fadeIn('fast');
    }

    function loading_hide() {
        $('#loading').fadeOut('fast');
    }

    function loadData(page) {
        loading_show();
        $.ajax({
            type: "POST",
            url: "product_master_data.php",
            data: "page=" + page,
            success: function (msg) {
                $(document).ajaxComplete(function (event, request, settings) {
                    loading_hide();
                    $(".data").html(msg);
                });
            }
        });
    }
    loadData(1); // For first time page load default results
    $('#container .pagination li.active').on('click', function () {
        var page = $(this).attr('p');
        loadData(page);

    });
    $('#go_btn').on('click', function () {
        var page = parseInt($('.goto').val());
        var no_of_pages = parseInt($('.total').attr('a'));
        if (page != 0 && page <= no_of_pages) {
            loadData(page);
        } else {
            alert('Enter a PAGE between 1 and ' + no_of_pages);
            $('.goto').val("").focus();
            return false;
        }

    });
 });
</script>

但我最近升级到 jquery 1.9.1 版本,下面的代码停止工作。

$('#container .pagination li.active').on('click', function () {
   var page = $(this).attr('p');
   loadData(page);

});
$('#go_btn').on('click', function () {
   var page = parseInt($('.goto').val());
   var no_of_pages = parseInt($('.total').attr('a'));
   if (page != 0 && page <= no_of_pages) {
       loadData(page);
   } else {
       alert('Enter a PAGE between 1 and ' + no_of_pages);
       $('.goto').val("").focus();
       return false;
   }

});

这是我的html

<div id="container">
  <div id="loading">
    <img id='imgSpinner1' src='../xxx/pagination/pagination.gif' />
  </div>
  <div class="data"></div>
  <div class="pagination"></div>
</div>

请告诉我需要进行哪些更改才能使其正常工作。

我的服务器端代码

   $msg. = "<div class='pagination'><ul>";

// FOR ENABLING THE FIRST BUTTON
if ($first_btn && $cur_page > 1) {
    $msg. = "<li p='1' class='active'>First</li>";
} else if ($first_btn) {
    $msg. = "<li p='1' class='inactive'>First</li>";
}

// FOR ENABLING THE PREVIOUS BUTTON
if ($previous_btn && $cur_page > 1) {
    $pre = $cur_page - 1;
    $msg. = "<li p='$pre' class='active'>Previous</li>";
} else if ($previous_btn) {
    $msg. = "<li class='inactive'>Previous</li>";
}
for ($i = $start_loop; $i <= $end_loop; $i++) {

    if ($cur_page == $i) $msg. = "<li p='$i' style='color:#fff;background-color:#006699;' class='active'>{$i}</li>";
    else $msg. = "<li p='$i' class='active'>{$i}</li>";
}

// TO ENABLE THE NEXT BUTTON
if ($next_btn && $cur_page < $no_of_paginations) {
    $nex = $cur_page + 1;
    $msg. = "<li p='$nex' class='active'>Next</li>";
} else if ($next_btn) {
    $msg. = "<li class='inactive'>Next</li>";
}

// TO ENABLE THE END BUTTON
if ($last_btn && $cur_page < $no_of_paginations) {
    $msg. = "<li p='$no_of_paginations' class='active'>Last</li>";
} else if ($last_btn) {
    $msg. = "<li p='$no_of_paginations' class='inactive'>Last</li>";
}
$goto = "<input type='text' class='goto' size='1' style='margin-top:-1px;margin-left:60px;'/><input type='button' id='go_btn' class='go_button' value='Go'/>";
$total_string = "<span class='total' a='$no_of_paginations'>Page <b>".$cur_page."</b> of <b>$no_of_paginations</b></span>";
$msg = $msg."</ul>".$goto.$total_string."</div>"; // Content for pagination

【问题讨论】:

  • 您是否收到任何错误消息或警告? (例如在 Firebug 控制台中)
  • 页面中是否有动态添加内容?如果是这样,您需要委托给最近的静态父级。
  • 不,我没有收到任何错误。我已经检查了 firebug 和 chrome 控制台
  • @Anton 我正在从数据库中获取数据并将其显示在 div 中就是这样。我也包含了该代码。

标签: php jquery pagination


【解决方案1】:

试试这个,委托给文档或最近的静态元素

$(document).on('click','#go_btn',function(){
//code
});

【讨论】:

  • 使用此代码,并尝试从被点击的元素中获取属性。使用 $(this).attr("rel"); 返回未定义。这种类型的委派有不同的方法吗?
  • NM - 我意识到 $(this) 是选择器 $(document) 而不是被点击的项目。
【解决方案2】:

对于动态添加的项目,以这种方式绑定事件。

如果.pagination 是动态的:

$('#container').on('click', '.pagination li.active', function() {
// code here
});

如果没有

$('#container .pagination').on('click', 'li.active', function() {
// code here
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2018-05-02
    • 2016-03-23
    相关资源
    最近更新 更多