используйте $.subscribe в файле javascript

#javascript #jquery #struts2 #jqgrid

#javascript #jquery #распорки 2 #jqgrid

Вопрос:

Когда я использую методы, например $.subscribe('grillaCompleta',function(){...}; , в файле javascript, это не работает; но если я использую на той же странице jsp, работает.

Это работает:

 <script type="text/javascript">
$.subscribe('grillaCompleta',function(){...};
</script>
 

Не работает, если код находится в файле JavaScript:

 <script type="text/javascript" src="js/codigoJavaScript.js"></script>
 

codigoJavaScript.js короткий:

 function OnChangeTurnoMarcacion(event){
$('#txtBuscar').val('');
$('#grilla').jqGrid('setGridParam',{url:'cargarMarcacion.html?                       
idperiodo=' $('#cboPeriodos').val() 'amp;idcentrocosto=' $('#cboUnidades')
.val() "amp;turno=" event.value}).trigger('reloadGrid');
 };
$.subscribe('grillaCompleta',function(){
var grid = $("#grilla");
var ids = grid.jqGrid("getDataIDs");

for ( var i = 0; i < ids.length; i  ) {
    var id = ids[i];
    var row = grid.jqGrid("getRowData",id);
    for ( var j = 1; j < 32; j  ) {
        if (j<10){
            var color = row["d0" j "_c"];
            grid.jqGrid('setCell',id,'d0' j,'',{'background-color':color},{'title':j});             
        }else{
            var color = row["d" j "_c"];
            grid.jqGrid('setCell',id,'d' j,'',{'background-color':color},{'title':j});
        }               
    }
  } 
});
function OnChangePeriodoMarcacion(event){
$('#txtBuscar').val('');
$('#grilla').jqGrid('setGridParam',{url:'cargarMarcacion.html?
idperiodo=' event.value 'amp;idcentrocosto=' $('#cboUnidades')
.val() "amp;turno=" $('#cboTurnos').val()}).trigger('reloadGrid'); 
 };
 

Хорошей практикой является наличие всего кода в файле javascript.

Комментарии:

1. Когда вы перемещаете его во внешний файл, он все gridComplete еще находится в области видимости?

2. Опечатка? 'gridComplete' против. 'gridComplet'

3. Имя события — gridComplet, проблема не в этом.

4. Что такое код в файловом JavaScript?

5. @RomanC, я обновил запрос.

Ответ №1:

На самом $.subsribe() деле он привязан к документу, поэтому убедитесь, что документ готов.

 $(document).ready(function(){
 $.subscribe(...);
 ...
}); 
 

Обратите внимание, что функции в javascript не требуют конечной точки с запятой.