2010-08-23 2 views
0

다음 코드는 각 목록 페이지 (예 : 아래에 나와있는 샘플 목록 페이지)에서 제거 기능을 제공하며 3 개의 변수 (tableId, removeButtonId, headerCheckbox) 만 각각 다릅니다 페이지. 각 페이지에서이 스크립트를 정의하는 대신 모든 페이지에서이 스크립트를 다시 사용하려면 어떻게해야합니까? 동적으로 각 페이지에서이 스크립트에 매개 변수를 전달하려면 어떻게합니까?각 페이지의 자바 스크립트에 매개 변수를 동적으로 전달하는 방법

 <script type="text/javascript"> 
      var tableId = '#usersChildren\\:userList'; 
      var removeButtonId = '#usersChildren\\:removeUsers'; 
      var headerCheckbox = '#selectAll'; 

      jQuery(document).ready(function() { 
       if (jQuery(tableId).find("input[type='checkbox']").length == 1) { 
        jQuery(headerCheckbox).hide(); 
        jQuery(removeButtonId).hide(); 
       } else if(jQuery(tableId).find("input[type=checkbox]:checked").length == 0) { 
        jQuery(removeButtonId).hide(); 
        jQuery(headerCheckbox).click(function() { 
         jQuery(tableId).find("input[type='checkbox']").attr('checked', jQuery(headerCheckbox).is(':checked')); 
        }); 
       } 

       jQuery(tableId).find("input[type='checkbox']").each(function() { 
        if(jQuery(this).attr('id') != headerCheckbox) { 
         jQuery(this).click(function() { 
          if (jQuery(headerCheckbox).is(':checked')) { 
           if(jQuery(tableId).find("input[type=checkbox]:checked").length != 1) { 
            jQuery(removeButtonId).show(); 
           } 
          } else if(jQuery(tableId).find("input[type=checkbox]:checked").length > 0) { 
           jQuery(removeButtonId).show(); 
          } else { 
           jQuery(removeButtonId).hide(); 
          } 
         }); 
        } 
       }); 
      }); 
     </script> 

답변

3

스크립트에서이 코드를 넣어 사용하는 그 그것을 필요로 각 템플릿, 스크립트 태그를 소스 : 필요한 각 템플릿에

function bindRemoveButton(tableId, removeButtonId, headerCheckbox) { 
    if (jQuery(tableId).find("input[type='checkbox']").length == 1) { 
     jQuery(headerCheckbox).hide(); 
     jQuery(removeButtonId).hide(); 
    } else if(jQuery(tableId).find("input[type=checkbox]:checked").length == 0) { 
     jQuery(removeButtonId).hide(); 
     jQuery(headerCheckbox).click(function() { 
      jQuery(tableId).find("input[type='checkbox']").attr('checked', jQuery(headerCheckbox).is(':checked')); 
     }); 
    } 

    jQuery(tableId).find("input[type='checkbox']").each(function() { 
     if(jQuery(this).attr('id') != headerCheckbox) { 
      jQuery(this).click(function() { 
       if (jQuery(headerCheckbox).is(':checked')) { 
        if(jQuery(tableId).find("input[type=checkbox]:checked").length != 1) { 
         jQuery(removeButtonId).show(); 
        } 
       } else if(jQuery(tableId).find("input[type=checkbox]:checked").length > 0) { 
        jQuery(removeButtonId).show(); 
       } else { 
        jQuery(removeButtonId).hide(); 
       } 
      }); 
     } 
    }); 
} 

는 할

<script type="text/javascript" src="remove.js"></script> 
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    var tableId = '#usersChildren\\:userList'; 
    var removeButtonId = '#usersChildren\\:removeUsers'; 
    var headerCheckbox = '#selectAll'; 

    bindRemoveButton(tableId, removeButtonId, headerCheckbox); 
    }); 
</script> 

이제 bindRemoveButton 함수를 한 곳에서 변경할 수 있으며 각 템플릿에서 세 변수 만 변경하면됩니다.

0

스크립트를 PHP 파일에 넣고 변수를 쿼리 문자열로 전달할 수 있습니다. 헤더 ("Content-type : application/x-javascript")를 사용하십시오. 자바 스크립트 파일로 렌더링합니다. 다음 예를 살펴보십시오. http://www.webhostingtalk.com/showthread.php?t=494879

다른 방법은 location.href를 사용하여 주소를 확인하는 것입니다. 예를 들어 귀하의 주소는 page1.html, page2.html page3.html

if (location.href.match(/page1/)) { //assign id for page 1 //} 

등이 ... 검색 더 예를 들어 location.href.match하고

관련 문제