kristers_Z Posted November 2, 2013 Report Share Posted November 2, 2013 (edited) Ir : tabula, kurā ir daudz linku. Mērķis : klikšķinot uz linkiem nenostrādā redirects uz href un darbojas ajaxs. Problēma : preventDefault(); nestrādā, links redirectojas uz hrefu Kods : $('a').click(function(e){ alert('click event works!'); alert(e.isDefaultPrevented); e.preventDefault(); alert(e.isDefaultPrevented); }); Pirmais alerts nostrādā, tātad click events tiek uzķerts. Otrs alerts atgriež: function returnFalse() {return false;} Trešais alerts atgriež: function returnTrue() {return true; } Pēc tam lapa tik un tā redirektojas uz hrefu. Kāpēc? Must be missing something obvious. Ja nu kas, tad Object.keys(e) atgriež šādas metodes: originalEvent,type,isDefaultPrevented,timeStamp,jQuery11020701912498800084,toElement,screenY,screenX,pageY,pageX,offsetY,offsetX,fromElement,clientY,clientX,buttons,button,which,view,target,shiftKey,relatedTarget,metaKey,eventPhase,currentTarget,ctrlKey,cancelable,bubbles,altKey,delegateTarget,handleObj,data Edited November 2, 2013 by kristers_Z Quote Link to comment Share on other sites More sharing options...
codez Posted November 2, 2013 Report Share Posted November 2, 2013 Man strādā: http://jsfiddle.net/Q6sfQ/ ja izmanto jquery, var izmantot return false: http://jsfiddle.net/Q6sfQ/1/ Quote Link to comment Share on other sites More sharing options...
kristers_Z Posted November 2, 2013 Author Report Share Posted November 2, 2013 Man strādā: http://jsfiddle.net/Q6sfQ/ Manā konkrētajā aplikācijas vietā tieši tāds paņēmiens nestrādā. Bet tikko atradu problēmu un piespiedu strādāt, lai gan pats nesaprotu, kāpēc tas tā ir: Pirmkārt - tiek lietots Ruby on Rails freimworks, tāpēc linkus ģenerē helper metode. ģenerētais html ir, apmēram, šāds: <a data-method="delete" href="/subjects/144" rel="nofollow">Delete subject</a> Uzmanība jāpievērš tam, ka href ir relatīvs. Ja piespiež kodu ģenerēt absolūtu hrefu, lūk, šādi: <a data-method="delete" href="localhost:3000/subjects/144" rel="nofollow">Delete subject</a> Tad preventDefault(); strādā kā paredzēts. Dīvaini, dīvaini.. Ceru, ka kāds var paskaidrot. Pieņemu, ka tas ir saistīts ar Rails veidu kā implementēt REST. Ja nemaldos, tad ar JS tiek uzķerts data-method="delete" un pārvērsts par formu, lai sūtītu caur HTTP POST ar apslēptu mainīgo method="delete". Quote Link to comment Share on other sites More sharing options...
codez Posted November 2, 2013 Report Share Posted November 2, 2013 Nu skaties, vai tur nav kāds javascript fw, kurš tās darbibas un redirektu izpilda ar javascriptu. preventDefault noņem defaulto a darbību, bet, ja tālāk kāds cits events taisa redirectu, tad tas nepalīdzēs: http://jsfiddle.net/Q6sfQ/3/ tad tev palīdzēs tikai kombinācija no preventDefault vai return false + stopImmediatePropagation http://jsfiddle.net/Q6sfQ/4/ Quote Link to comment Share on other sites More sharing options...
kristers_Z Posted November 2, 2013 Author Report Share Posted November 2, 2013 tad tev palīdzēs tikai kombinācija no preventDefault vai return false + stopImmediatePropagation u r the man, stopImmediatePropagation visu atrisināja. Paldies. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.