使用parseInt将整数值添加到字符串不能处理动态添加的内容

时间:2015-03-02 14:24:10

标签: javascript jquery ajax

我的HTML看起来像这样

<span class="responsesCount"><b>0<b/></span> 

<div class="addOne">submitResponse</div>

每次用户发表对评论的回复时,我都会使用Jquery将类(responCount)递增一。

$(document).on("pagecreate",function(event) {

    $(document).on('click', '.addOne', function(e) {
        e.preventDefault();

        var commentCount = ".responsesCount";

        var num = $(commentCount).text();
        var newnum = parseInt(parseFloat(num), 10)+1;
        $(commentCount).text(newnum);       
    });    
});

当页面首次加载递增1时,代码按预期工作。

问题是当我通过ajax将动态内容加载到页面中时我得到一个意外的结果它似乎连接而不是像预期的那样增加

0
1
12
13
14
15
2

实际输出如下所示:12 13 14 15 2

 <span class="responsesCount"><b>12131415<b/></span>

我也使用了以下代码段,但似乎都没有。

$(commentCount).text(parseInt(num) + 1);
$(commentCount).text(parseInt(num, 10) + 1);
$(commentCount).text(num + 1);
$(commentCount).text(num++);
$(commentCount).text(++num);
$(commentCount).text(num * 2);

var num = $(commentCount).text();
$(commentCount).text(parseInt(num) +1); 

我用来将更多内容加载到页面中的代码。

$(document).on('click', '.moreResult', function(event) {
  event.preventDefault();    
  var res = $(".feed:last").attr("id");

$.ajax({
  url: "process/loadmore.php?lastid=" + res,
  success: function(html) {     
      if(html) {
           $(".addResults").append(html).trigger('create');    
      } else { 
           $(".moreResult").html("End!");      
      }
    }
  });
 });     
});  

我整晚一直在拉头发,这个问题似乎没什么用!任何帮助将不胜感激。提前谢谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

你为什么这么复杂?你真的需要解析吗?如果不是,请看这个演示:

使用的代码:

$(document).on("create",function(event) { // Your event is called create, isn't it ?
    var count = 0;

    $(".addOne").click(function(e) {
        e.preventDefault();
        $(".responsesCount").text(++count);       
    });    
});

$(function(event) {
    var count = 0;

    $(".addOne").click(function(e) {
        e.preventDefault();
        $(".responsesCount").text(++count);       
    });    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="responsesCount"><b>0<b/></span> 

<div class="addOne">submitResponse</div>

如果是,请查看那个:

$(document).on("create",function(event) { // Your event is called create, isn't it ?

    $('.addOne').click(function(e) {
        e.preventDefault();

        var num = $(commentCount).text();
        var newnum = parseInt(num, 10) + 1;
        $(".responsesCount").text(newnum);       
    });    
});

在上面的代码中,我清理了所有内容以专注于最重要的内容。您不应该parseInt(parseFloat(...)),因为parseInt正在等待string,而parseFloat会返回float

$(function() {

    $('.addOne').click(function(e) {
        e.preventDefault();

        var num = $(".responsesCount").text();
        var newnum = parseInt(num, 10) + 1;
        $(".responsesCount").text(newnum);       
    });    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="responsesCount"><b>0</b></span>

<div class="addOne">submitResponse</div>