2010-03-31 9 views
6

Aquí es función,jQuery anclaje Pulse para trabajar

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

Y en mi página estoy anexando anclas de forma dinámica a este div,

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

estoy anexando anclajes dinámicamente ... Todos los anclajes tendrán class="page-numbers" ... Cómo se puede hacer ...

When ins se sospecha vienen a través firebug mi div localizador tenía esto cuando hice clic 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:

I utilizando 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

¿Qué quiere decir con * clic no parecen funcionar *? La alerta no se ejecuta? –

+0

@Felix ya está bien ... Ver mi función 'getRecordspage' estoy generando paginación ..... –

+0

¿dónde está creando los enlaces? –

Respuesta

6

Uso .live():

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

o ejecute su asignación de controlador después de ha creado los enlaces. Si no hay elementos con la clase page-numbers cuando se ejecuta esta función, por supuesto no ocurre nada.

Pero live() se encarga de eso:

Descripción: Adjuntar un manejador para el evento de todos los elementos que coinciden con el selector de corriente, ahora o en el futuro.

Actualización:

Bueno, yo no estoy seguro. Una cosa que puedes intentar es para mover su función dentro de la función del éxito de la llamada 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 que no funcionó ... –

+0

@Pandiya Chendur: Entonces tienes que proporcionar más código. ¿Cuándo/cómo creas esos enlaces? –

+0

@felix mira mi pregunta ahora obtendrás una buena idea de lo que soy haciendo ... –

2

debe utilizar .live cuando se le agrega dinámicamente elementos.

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

se debe utilizar jQuery 1,42 y .delegate() en lugar de .live():

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

@Andy delegate parece que no se ejecuta. .. –

+0

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

+0

@Matt: Parece ser nuevo en 1.4.2 no en 1.4 –

Cuestiones relacionadas