在成功执行ajax调用后,使用jQuery将元素添加到元素

时间:2018-06-08 10:30:01

标签: javascript jquery ajax asp.net-core

我在点击SET @last_login:=NULL; SET @last_user:=NULL; SET @last_cat:=NULL; UPDATE userRegister r JOIN ( SELECT name, userId, catId, login, if((logout is NULL) AND (@last_user=userId) AND (@last_cat=catId), @last_login, logout) as logout , @last_login :=login as dummy_log , @last_user:=userId as dummy_user , @last_cat:=catId as dummy_cat FROM userRegister ORDER BY userId, catId, login desc) d USING(userId, catId, login) SET r.logout = d.logout; 时尝试向'active'添加<li>课程。这就是<li>的结构:

<li><a>

由于每个<li onclick="paginationChange(2)" id="2" class="page-item"> <a class="page-link" href="#">2</a> </li> 都附加了一个ID,我认为它会像以下一样简单:

<li>

$('#' + page).addClass('active'); 是传递给page方法的数字。然而,令我感到困惑的是,我使用的onclick是在PartialView调用成功时加载的。因此整个ajax方法如下所示:

onclick

我试过移动function paginationChange(page) { $.ajax({ type: 'GET', url: '/Projects/ProjectTable/CountProjects', data: { searchString: $('#searchBox').val() }, success: function(result) { $('#table-container').load('/Projects/ProjectTable/TestPartialView', { searchString: $('#searchBox').val(), currentPage: page, projectCount: result }); $('#' + page).addClass('active'); } }); } 调用因为我认为问题可能是我添加了类后呈现addClass因此渲染了没有类的元素。

有没有办法可以等到PartialView完整加载,然后将课程添加到正确的TestPartialView

编辑:

<li>

新js:

<ul id="paginationList" class="pagination">
   <li id="1" class="page-item">
      <a class="page-link" href="#">1</a>
   </li>
</ul>

2 个答案:

答案 0 :(得分:1)

  

有没有办法我可以等到TestPartialView完全加载,然后将类添加到正确的<li>

是的,您只需使用部分完全加载后将调用的 load() 回调:

$('#table-container').load('/Projects/ProjectTable/TestPartialView',
{
    searchString: $('#searchBox').val(),
    currentPage: page,
    projectCount: result
}, function(){
    $('#' + page).addClass('active');
}); 

答案 1 :(得分:1)

  

有没有办法让我可以等到TestPartialView完全加载,然后将类添加到正确的<li>

是的,您可以将addClass()来电置于load()来电的回调中。

另请注意,使用on*事件处理程序非常过时。当您使用jQuery时,您可以使用它向li添加不显眼的事件处理程序,这样就不需要传递硬编码的参数,因为您已经引用了引发事件的元素。试试这个:

<ul>
  <li class="page-item">
    <a class="page-link" href="#">2</a>
  </li>
</ul>
$(function() {
  $('li.page-item').click(function() {
    var $li = $(this);

    $.ajax({  
      type: 'GET',
      url: '/Projects/ProjectTable/CountProjects',
      data: { 
        searchString: $('#searchBox').val() 
      },
      success: function(result) {
        $('#table-container').load('/Projects/ProjectTable/TestPartialView', {
          searchString: $('#searchBox').val(),
          currentPage: page,
          projectCount: result
        }, function() {   
          // this argument is a function to be executed once the content has been loaded,
          // similar to the success handler of $.ajax
          $li.addClass('active');
        });             
      }
    });
  });
});