2012-11-13 3 views
0

Я смущаюсь preventDefault().preventDefault не работает для меня

я получил следующую работу, как мой тест

$('.next').click(function(e){ 
     if(e.preventDefault){ 
      console.log("asdfnext"); 
      e.preventDefault(); 
     }else{ 
      console.log("next"); 
      return false; 
     }  
    }); 

и это является частью рабочего файла.

<a class='next' href='http://www.bbc.co.uk'>Next</a> 
<a class='previous' href='http://www.facebook.com'>previous</a> 

В соответствии с вышеизложенным, я могу остановить свою ссылку на bbc или facebook. и вы можете проверить его здесь http://jsfiddle.net/puQ7H/

, но когда я пытаюсь реализовать это на нижеследовал я получаю неудачу, и я действительно хотел бы знать, почему

$('#step0Next').click(function(e){ 
      if($(this).is('.disabled')){ 
       console.log("disabled");      
        if(e.preventDefault){ 
         console.log("asdfnext"); 
         e.preventDefault(); 
         return false; 
        }else{ 
         console.log("next"); 
         return false; 
        } 

      }else{ 
       console.log("not disabled");  
      } 

     }); 

в основном ==> step0Next моя ссылка ID

и мой CSS выглядит следующим образом:

a.disabled { opacity:0.2; cursor: default; } 

моя идея, если ссылка находится в ('.disable') состояние, переходите к следующему шагу.

На самом деле ссылка переходите к следующему шагу, и я останавливаюсь здесь. : P

+0

для IE Я делаю это. я делаю неправильно? – yas

+0

Он должен работать. Убедитесь, что вы запустите код, когда документ готов. – sroes

+0

в вашей скрипке вы включили mootools, а не jQuery – Ruben

ответ

2

Вы проверяете, если .preventDefault существует с if-блока, то почему? Попробуйте это:

$('#step0Next').click(function(e){ 
    if($(this).hasClass('disabled')){ 
     console.log("disabled");      
     e.preventDefault(); 
    } else { 
     console.log("not disabled");  
    } 
}); 

И на самом деле .hasClass() немного быстрее, так как он не проходит через двигатель селектора.

1

попробовать с помощью event.isDefaultPrevented()

if(e.isDefaultPrevented()){ 

} 

Описание: Возвращает был ли когда-либо event.preventDefault называется() на этом объекте события.

1

Вам не нужен return false;, и я действительно не считаю, что проверка релевантна. Попробуйте использовать вместо этого:

$('#step0Next').click(function(e){ 
     if($(this).is('.disabled')){ 
      console.log("asdfnext"); 
      e.preventDefault(); 
     }else{ 
      console.log("not disabled");  
     } 
});​ 
Смежные вопросы