2014-06-10 105 views
0

伙计们我有一个函数,它使用ajax调用基于div中的值动态检索数据。现在,在功能lastNoticeID值未得到更新其不在它不断重复相同的数据的任何loop..thus ..如何动态检索div的值?

CODE:

function callMoreData() { 
    var lastNoticeID = $('#hiddenLastNoticeID').val(); 
    $.ajax({ 
     type: "GET", 
     url: "/api/values/getnotice?num=" + lastNoticeID, 
     dataType: "json", 
     crossDomain: true, 
     async: true, 
     cache: false, 
     success: function (data) { 
      $.each(data, function (index, value) { 
       BindNotice(value); 
      }); 
     }, 
     error: function (x, e) { 
      alert('problem while fetching records!'); 
     } 
    }); 
} 



function BindNotice(values) { 
    $('#divNotices').append('...some code...' + 
     '<input id="hiddenLastNoticeID" type="hidden" value="' + values.LastNoticeID + 
     '" />' + '...some code...'); 
} 

正如你可以在代码中看到以上情况,我从上面的div检索值,然后将其传递给webApi网址...现在,这是运行良好,并在第一次滚动我得到的价值,但然后功能不断重复相同的价值一次又一次,即var lastNoticeID没有得到更新。我如何获得它每个滚动事件更新?

btw divNoticesBindNotice函数具有相同的html代码。

+2

ID必须是唯一的。你的'#hiddenLastNoticeId'将被复制。 jQuery将始终匹配第一个元素。 – Matt

+1

您不能拥有多个具有相同'id'的元素。像''一样选择'只会返回1个元素(第一个元素)。改为使用课程,然后选择并取最后一个。或者更好的解决方案可能是将'LastNoticeID'存储在变量中。 –

回答

1

使用类来代替:

function BindNotice(values) { 
    $('#divNotices').append('...some code...' + 
     '<input class="hiddenNotice" type="hidden" value="' + values.LastNoticeID + 
     '" />' + '...some code...'); 
} 

然后:

var lastNoticeID = $('.hiddenNotice').last().val(); 

或者,你可以只存储LastNoticeID在一个变量:

var lastNoticeID = 0; 

function BindNotice(values) { 
    $('#divNotices').append('...some code...' + 
     '<input class="hiddenNotice" type="hidden" value="' + values.LastNoticeID + 
     '" />' + '...some code...'); 
    lastNoticeID = values.LastNoticeID; 
} 
+0

这就是我所做的。谢谢。 :) – NewbieProgrammer

-1

您似乎在添加更多相同ID的元素。 ID的应该是单个实例,因此Jquery将只抓取DOM中的第一个实例。 (这就是为什么$('#hiddenLastNoticeID').val();是一样的,每次)

+1

不是一个真正的答案,它不提供OP的解决方案。 –

+0

好,我加一个 –

+0

不要紧,你显然已经覆盖了。但解决方案并不总是必须是代码,实际上不应该是。很显然,NewbieProgrammer不知道ID是单实例,Jquery是这样对待它们的。现在有了这些知识,他/她自己就可以学习。 –