Как переписать код,организовать функцию?
На странице:<script>
var dataObj = {
  subCat : "#<?=$subCatId?>",
  mainCat : "#<?=$mainCatId?>"
}
</script>
<script src="file.js"></script>
В file.js:jQuery(function() {
  var $sC = jQuery(dataObj.subCat).hide();
  jQuery(dataObj.mainCat).hover(
     function(){
        $sC.show(300);
     },
     function(){
        $sC.hide();
     }
	);
});
Как вариант, с помощью PHP создать глобальный JS объект и потом обращаться к нему из функции. <script>
    "window.data = {'mainCatId':". $mainCatId . ",'subCatId': ". $subCatId ."}"
</script>jQuery(function() {
			jQuery('div#'+ window.subCatId).hide();
			jQuery('div#'+ window.mainCatId ).hover(
				function(){
					jQuery(this).find('div#' + window.subCatId).show(300);
				},
				function(){
					jQuery(this).find('div#'+ window.subCatId).hide();

				}
	);
});