Jump to content
php.lv forumi

Recommended Posts

Posted (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 by kristers_Z
Posted

 

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".

Posted

tad tev palīdzēs tikai kombinācija no preventDefault vai return false + stopImmediatePropagation

 

u r the man, stopImmediatePropagation visu atrisināja. Paldies.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...