2010-03-31 13 views
6

Ecco funzione,jquery ancoraggio click non sembra funzionare

<script type="text/javascript"> 
    $(document).ready(function() { 
     getRecordspage(1, 5); 
     $("a.page-numbers").click(function() { 
      alert(1); 
      getRecordspage($(this).text(), 5); 
      return false; 
     }); 
    }); 

E nella mia pagina sto aggiungendo tasselli in modo dinamico a questo div,

<div id="pager" class="pager"> 
//my anchors will be present here... 
</div> 

sto aggiungendo ancore dinamicamente ... Tutti gli ancoraggi avranno class="page-numbers" ... Come può essere fatto ...

Quando ins pected attraverso firebug mio cercapersone div aveva questo quando ho cliccato 3,

<div class="pager" id="pager"> 
<a class="page-numbers prev" href="#">Prev</a> 
<a class="page-numbers" href="#">1</a> 
<a class="page-numbers" href="#">2</a> 
<span class="page-numbers current">3</span> 
<a class="page-numbers" href="#">4</a> 
<a class="page-numbers next" href="#">Next</a></div> 

EDIT:

ho utilizzando jQuery 1.4 ...

function getRecordspage(curPage, pagSize) { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/GetRecords", 
     data: "{'currentPage':" + curPage + ",'pagesize':" + pagSize + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(jsonObj) { 
      var strarr = jsonObj.d.split('##'); 
      var jsob = jQuery.parseJSON(strarr[0]); 
      var divs = ''; 
      $.each(jsob.Table, function(i, employee) { 
       divs += '<div class="resultsdiv"><br /><span class="resultName">' + employee.Emp_Name + '</span><span class="resultfields" style="padding-left:100px;">Category&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.Desig_Name + '</span><br /><br /><span id="SalaryBasis" class="resultfields">Salary Basis&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.SalaryBasis + '</span><span class="resultfields" style="padding-left:25px;">Salary&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.FixedSalary + '</span><span style="font-size:110%;font-weight:bolder;padding-left:25px;">Address&nbsp;:</span>&nbsp;<span class="resultfieldvalues">' + employee.Address + '</span></div>'; 
      }); 
      $("#ResultsDiv").append(divs); 
      $(".pager").pagination(strarr[1], { 
       current_page: curPage - 1, items_per_page: '5', num_display_entries 
: '5', next_text: 'Next', prev_text: 'Prev', num_edge_entries: '1' 
      }); 
      $(".resultsdiv:even").addClass("resultseven"); 
      $(".resultsdiv").hover(function() { 
       $(this).addClass("resultshover"); 
      }, function() { 
       $(this).removeClass("resultshover"); 
      }); 
     } 
    }); 
+0

Cosa intendi con * clic non sembra funzionare *? L'avviso non viene eseguito? –

+0

@Felix ya giusto ... Vedi la mia funzione 'getRecordspage' sto generando paginazione ..... –

+0

dove stai creando i collegamenti? –

risposta

6

Uso .live():

$("a.page-numbers").live('click',function() { 
     alert(1); 
     getRecordspage($(this).text(), 5); 
     return false; 
}); 

o eseguire l'assegnazione del gestore dopo, i collegamenti sono stati creati. Se non ci sono elementi con classe page-numbers quando viene eseguita questa funzione, ovviamente non accade nulla.

Ma live() si occupa di questo:

Descrizione: Collegare un gestore per l'evento per tutti gli elementi che corrispondono al selettore di corrente, ora o in futuro.

Aggiornamento:

Beh, io non sono sicuro. Una cosa che puoi provare è spostare la tua funzione all'interno della funzione di successo della chiamata Ajax:

function getRecordspage(curPage, pagSize) { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/GetRecords", 
     data: "{'currentPage':" + curPage + ",'pagesize':" + pagSize + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(jsonObj) { 
      // .. lot of stuff here.. 
      // at the end: 
      $("a.page-numbers").click(function() { 
       alert(1); 
       getRecordspage($(this).text(), 5); 
       return false; 
      } 
     } 
    }); 
} 
+0

@felix che non ha funzionato ... –

+0

@Pandiya Chendur: Quindi devi fornire più codice Quando/come crei questi collegamenti? –

+0

@felix guarda la mia domanda ora avrai una buona idea di cosa sono facendo ... –

2

è necessario utilizzare .live quando si aggiungono dinamicamente gli elementi.

<script> 
    $(document).ready(function() { 
     getRecordspage(1, 5); 
     $("a.page-numbers").live('click', function() { 
      alert(1); 
      getRecordspage($(this).text(), 5); 
      return false; 
     }); 
    }); 
</script> 
1

si dovrebbe usare jQuery 1.42 e .delegate() invece di .live():

$("a.page-numbers").delegate('click', 'a.page-numbers', function(){ 
    alert('1'); 
}); 
+0

@ Un delegato non sembra essere eseguito. .. –

+0

non è '$ (" a.page-numbers "). Delegate ('a.page-numbers', 'click', function() {...'? –

+0

@Matt: sembra essere nuovo in 1.4.2 non in 1.4 –

Problemi correlati