2013-01-18 26 views
15

करना संभव डुप्लिकेट को अद्यतन करने:
jQuery 1.7 - Turning live() into on()jquery.unobtrusive-ajax प्लगइन टूट गया जब Jquery 1.9.0

// समाधान: मैं बस चार पुनरावृत्तियां प्रतिस्थापित अनुमोदित उत्तर की तरह का सुझाव दिया और unobtrusive AJAX प्लगइन ऊपर है और jquery के साथ फिर से काम कर रहा है 1.9.0

अद्यतन // नीचे दिए गए उत्तर के लिए टिप्पणियों का निरीक्षण करें जो इसे हल करने का सबसे अच्छा तरीका है।

// मूल पोस्ट: मैंने jQuery 1.9.0 में अपग्रेड किया लेकिन फिर लाइव विधि को बहिष्कृत करने के बाद अप्रचलित AJAX प्लगइन नीचे चला गया। मैंने इसे इस तरह बदलने की कोशिश की क्योंकि अपग्रेड मेरे लिए एक और बग फिक्स करता है। हालांकि, यह काम नहीं करता है। मैं बस पर के साथ लाइव प्रतिस्थापित इस तरह:

$("a[data-ajax=true]").on("click", function (evt) { 
     evt.preventDefault(); 
     asyncRequest(this, { 
      url: this.href, 
      type: "GET", 
      data: [] 
     }); 
    }); 

    $("form[data-ajax=true] input[type=image]").on("click", function (evt) { 
     var name = evt.target.name, 
      $target = $(evt.target), 
      form = $target.parents("form")[0], 
      offset = $target.offset(); 

     $(form).data(data_click, [ 
      { name: name + ".x", value: Math.round(evt.pageX - offset.left) }, 
      { name: name + ".y", value: Math.round(evt.pageY - offset.top) } 
     ]); 

     setTimeout(function() { 
      $(form).removeData(data_click); 
     }, 0); 
    }); 

    $("form[data-ajax=true] :submit").on("click", function (evt) { 
     var name = evt.target.name, 
      form = $(evt.target).parents("form")[0]; 

     $(form).data(data_click, name ? [{ name: name, value: evt.target.value }] : []); 

     setTimeout(function() { 
      $(form).removeData(data_click); 
     }, 0); 
    }); 

    $("form[data-ajax=true]").on("submit", function (evt) { 
     var clickInfo = $(this).data(data_click) || []; 
     evt.preventDefault(); 
     if (!validate(this)) { 
      return; 
     } 
     asyncRequest(this, { 
      url: this.action, 
      type: this.method || "GET", 
      data: clickInfo.concat($(this).serializeArray()) 
     }); 
    }); 
+0

आप stackoverflow खोज या दस्तावेज को पढ़ कर शुरू कर सकता है। http://stackoverflow.com/questions/8021436/jquery-1-7-turning-live-into-on http://api.jquery.com/on/ –

+13

@ केविन बी थोड़ा कठोर और अनुपयोगी:/मैंने हिट किया एक ही समस्या और गूढ़ और खोज स्टैक ओवरफ्लो - मैंने इस सवाल को मारा और – Cocowalla

+0

से जुड़े किसी भी व्यक्ति के पास कभी नहीं आया, मुझे लगता है कि कुछ लोगों को केवल अच्छे खोज शब्दों के साथ आने में परेशानी है। उदाहरण के लिए, यह एक "कन्वर्ट। टूव टू टू jQuery" था, पहले 6 परिणाम मैं सभी को '.live' से' .on' में परिवर्तित करने के अच्छे उदाहरण दिखाता हूं। –

उत्तर

12

on (प्रतिनिधिमंडल) का उपयोग कर live के बराबर है:

$(document).on("click","a[data-ajax=true]", function (evt) {...}); 

आप jQuery के .on() विधि प्रलेखन यहाँ पा सकते हैं:

>> http://api.jquery.com/on/ <<

द।() मुझे थोड jQuery ऑब्जेक्ट में तत्वों के वर्तमान में चयनित पर इवेंट हैंडलर को जोड़ता है। JQuery 1.7 के रूप में, .on() विधि ईवेंट हैंडलर को जोड़ने के लिए आवश्यक सभी कार्यक्षमता प्रदान करता है। पुराने jQuery घटना तरीकों से परिवर्तित करने में मदद के लिए, .bind(), .delegate(), और .live() देखते हैं।

.on() साथ बाध्य घटनाओं निकालने के लिए, .off()। एक घटना संलग्न करने के लिए है कि रन केवल एक बार और फिर ही निकाल देता है, देखते हैं .one()

+0

Awsome, चीयर्स! –

+0

यहां वर्कअराउंड की जांच भी करें - http://connect.microsoft।कॉम/विजुअल स्टूडियो/फीडबैक/विवरण/776 9 65/कृपया-समर्थन-jquery-v1-9-0- ठीक-में-jquery-validate-unobtrusive –

+2

और jquery.validate को 1.11.0 (आज जारी) पर अपग्रेड करें: https: // nuget.org/packages/jQuery.Validation/1.11.0 –