2009-04-25 14 views
10

मैं कुछ बेवकूफ कर रहा हूं। लेकिन अगर मैं की तरह एक सामान्य लिंक है:AJAX कॉल का उपयोग करते समय मैं jQuery के साथ एक लिंक कैसे रोक सकता हूं?

<div id="changeMe"></div> 
<a href="/Not/Intercepted" id="interceptMe">A link</a> 

और मैं बहुत तरह लिंक करने के लिए एक jQuery क्लिक करें घटना देते हैं:

$('#interceptMe').click(function() { 
    $('#changeMe').text('Changed'); 
    return false; 
}); 

सब कुछ विलक्षण काम करता है। पृष्ठ पर रीडायरेक्ट/नहीं/इंटरसेप्ट किया गया है, जो मुझे लगता है कि यह सही होगा।

अब ...

मैं अपने क्लिक करें घटना के लिए $ .Get की तरह एक ajax कॉल introduct और अब मेरा पेज को गलत तरीके से पेज है, जो अनिवार्य ajax कॉल अधिलेखित कर देता है करने के लिए निर्देशित किया जाएगा।

$('#interceptMe').click(function() { 
    $.get('/Ajax/Call', goesIn, function(comesOut) { 
    $('#changeMe').html(comesOut); 
    }, "html"); 
    return false; 
}); 

क्या jQuery या जावास्क्रिप्ट को अभी भी लिंक क्लिक को अवरुद्ध करने का कोई तरीका है, तो यह href पृष्ठ पर नहीं जाता है? मैं उन उपयोगकर्ताओं के लिए href रखना चाहता हूं जो जावास्क्रिप्ट को सक्षम नहीं कर रहे हैं। TIA!

+3

क्या आप वाकई काम नहीं करते हैं? क्योंकि यह मेरे लिए ठीक दिखता है (यानी इसे रीडायरेक्ट नहीं करना चाहिए)। – cletus

+0

यही वह था जो मैं सोच रहा था। यह भी मेरे लिए सही लग रहा है, इसलिए सुनिश्चित नहीं है कि बिल्ली क्या चल रहा है। – rball

+0

अब यह काम कर रहा है। मेरी गलती! – rball

उत्तर

22
झूठी वापसी, उपयोग के बजाय

....

$("#interceptMe").click(function(event){ 

    event.preventDefault(); 

    // Ajax here 

    return false; //for good measure 
}); 

http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29

मैं IE विशेष रूप से झूठी वापस जाने के लिए नहीं सुन साथ कई मुद्दों पर लिया है। जाहिर है तो अन्य http://coffeeandpaste.blogspot.com/2009/02/javascript-onclick-return-false-does.html

+0

@rball 'वापसी झूठी' को करना चाहिए हालांकि एक ही बात है। JQuery का उपयोग करने के 3.5 वर्षों में मुझे पहले कभी यह समस्या नहीं आई है। यदि 'event.preventDefault' काम करता है और 'झूठी वापसी' नहीं करता है, तो कृपया मुझे बताएं। – KyleFarris

+1

प्रतिक्रिया के लिए धन्यवाद, करेंगे। मैंने यह भी सोचा कि यह अजीब था, लेकिन यह सब कुछ हो रहा है जिस पर मेरे पास AJAX कॉल है। – rball

+0

@ केलीफारिस मुझे ब्राउजर के साथ कई समस्याएं आई हैं जो बदले में झूठी काम नहीं कर रही हैं। preventDefault() अब तक 100% काम करता है इसलिए मैंने इसे अधिक विश्वसनीय कोड के लिए स्विच कर दिया है। मैंने अपने उत्तर को एक ही मुद्दे वाले अन्य लोगों के लिंक के साथ अपडेट किया। –

संबंधित मुद्दे