2010-07-08 2 views
0

У меня есть плагин, в котором я могу установить настройки и вызывать его, когда документ готов. Тем не менее, я хочу изменить его на «onclick» кнопки вместо DOM.Проблема с вызовом функции jQuery

плагин идет как

(function($) { 

$.fn.addressSearch = function(settings) { 

    settings = jQuery.extend({ 
     searchClass: "quickSearch",        
     checkElement: "href",         
     dataElement: "data",         
     countryListClass: "countryList",      
     countryCode: "11455",         
     errorMsg: "You can only search for address in the UK.", 
     houseNumberClass: "TextboxHouseNumber",     
     postcodeClass: "postcode",        
     addressLine1Class: "addSearchLine1",      
     addressLine2Class: "addSearchLine2",      
     addressLine3Class: "addSearchLine3",     
     addressTownCityClass: "addTownCity",      
     ajaxUrl: "/WebService/addressLook",    
     submitType: "POST",          
     dataType: "xml",          
     parameters: "",           
     addressProcessURL: "",         
     callbackFunctionSingleAddress: selectAddress,   
     callbackFunctionMultipleAddress: quickBoxSearch,   
     useExternalProcessPage: false,       
     validateCountry: true         

    }, settings); 

    var jQueryMatchedObj = this;         

    function _initialize() { 
     _startModal(this, jQueryMatchedObj);      
     return false;           
    } 
    function _startModal(objClicked, jQueryMatchedObj) { 
     $j(objClicked).addClass(settings.searchClass); 

     var countryList = "." + settings.countryListClass + ""; 

     if (settings.validateCountry) { 
      if ($j(countryList) && $j(countryList).val() != settings.countryCode) { 
       alert(settings.errorMsg); 
       return false; 
      } 
     } 

     if (settings.parameters) { 
      $j.ajax({ 
       url: settings.ajaxUrl, 
       type: settings.submitType, 
       dataType: settings.dataType, 
       data: settings.parameters, 
       success: function(res) { 
        var addresses = eval(res.getElementsByTagName('string')[0].firstChild.data); 
        if (addresses.length == 0) 
         alert('Your address could not be found, please enter it manually'); 
        else if (addresses.length == 1) { 
         settings.callbackFunctionSingleAddress(
          addresses[0].addressLine1, 
          addresses[0].addressLine2, 
          addresses[0].addressLine3, 
          addresses[0].town, 
          settings.TextboxHouseNumber, 
          settings.postcodeClass, 
          settings.addressTownCityClass, 
          settings.addressLine1Class, 
          settings.addressLine2Class, 
          settings.addressLine3Class 
          ); 
        } else if (addresses.length > 1) { 
         settings.callbackFunctionMultipleAddress(
          settings.callbackFunctionSingleAddress, 
          addresses, 
          settings.useExternalProcessPage, 
          settings.TextboxHouseNumber, 
          settings.postcodeClass, 
          settings.addressTownCityClass, 
          settings.addressLine1Class, 
          settings.addressLine2Class, 
          settings.addressLine3Class 
          ); 
        } 
       } 
      }); 
     } 
     return false; 
    } 
    //return this._initialize(); 
    return this.unbind('click').click(_initialize); 
} 
})(jQuery); 

это работает wihtout любой проблемы, когда вызов на DOM готова, я называю это, как показано ниже;

$("#mydiv").addressSearch({ 
    searchClass:"foo", 
}); 

Я хочу называть это onclick того же div. как мне это сделать? когда я попробую ниже, он говорит: «addressSearch undefined»

$("#mydiv").click(function(){ 

    addressSearch({ 
    searchClass:"foo", 
    }); 

}); 

Где я пошла не так?

ответ

2

Ну вы написали плагин, так что вы должны использования его как часть JQuery.

$('#mydiv').click(function() { 
    $(this).addressSearch(/* ... */); 
}); 
0

ли не то что нужно, чтобы быть:

$("#mydiv").click(function(){ 

    $("#mydiv").addressSearch({ 
    searchClass:"foo", 
    }); 

}); 

ИЛИ даже

$("#mydiv").click(function(){ 

    $(this).addressSearch({ 
    searchClass:"foo", 
    }); 

}); 
Смежные вопросы