2010-03-31 13 views
6

Hier zu arbeiten ist Funktion,jquery Anker Klick scheint nicht

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

Und meiner Seite i Anker dynamisch an diesem div bin anhängt,

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

i am Anfügen Anker dynamisch ... Alle Anker haben class="page-numbers" ... Wie es gemacht werden kann ...

Wenn ins teten durch firebug mein Pager div hatte, als ich 3 geklickt haben,

<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:

ich mit 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

Was Sie mit * klick bedeuten scheinen nicht * zu arbeiten? Die Warnung wird nicht ausgeführt? –

+0

@Felix ya das ist richtig ... Siehe meine 'getRecordspage' Funktion Ich erzeuge Paginierung ..... –

+0

wo erstellen Sie die Links? –

Antwort

6

Verwendung .live():

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

oder führen Sie Ihre Handler-Zuweisung nach Sie die Links erstellt. Wenn beim Ausführen dieser Funktion keine Elemente mit der Klasse page-numbers vorhanden sind, passiert natürlich nichts.

Aber live() kümmert sich darum:

Beschreibung: einen Handler auf das Ereignis für alle Elemente anbringen, die den aktuellen Selektor übereinstimmen, jetzt oder in der Zukunft.

Update:

Nun bin ich nicht sicher. Eine Sache, die Sie versuchen können, ist Ihre Funktion innerhalb der Erfolgsfunktion des Ajax-Aufrufs zu bewegen:

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 das hat nicht funktioniert ... –

+0

@Pandiya Chendur: Dann musst du mehr Code zur Verfügung stellen.Wenn/wie erstellst du diese Links? –

+0

@felix schau dir meine Frage an, jetzt bekommst du eine faire Idee was ich bin tun ... –

2

müssen Sie verwenden .live wenn Sie dynamisch Elemente hinzugefügt werden.

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

Sie sollten jquery 1,42 und .delegate() statt .live() verwenden:

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

@Andy Delegat scheint nicht ausgeführt werden. .. –

+0

ist es nicht $ ("a.page-numbers"). Delegate ('a.page-numbers', 'click', function() {... '? –

+0

@Matt: Scheint neu zu sein in 1.4.2 nicht in 1.4 –