Pregunta

Tengo un enlace. Cuando alguien hace clic en eso, quiero verificar algunas condiciones antes de dejar que funcione. Si es false La acción predeterminada debe prevenirse.

$(".pager-next a.active").click(function(event) {
    if (!a == 1) {
        event.preventDefault();
    }           
});

El enlace solo debe funcionar si a es igual a 1. Es el código anterior correcto. a se establece en 1 Si se cumple una condición particular. El enlace solo debe funcionar si se cumple la condición.

¿Fue útil?

Solución

Asumiendo por 'solo debe funcionar si a es igual a 1'Te refieres al texto del a El elemento es igual a 1, intente esto:

$(".pager-next a.active").click(function(event) {
    if ($(this).text() != "1") {
        event.preventDefault();
    }           
});

Puedes enmendar text() para usar el atributo del elemento disponible para usted en jQuery.

ACTUALIZAR

Mi A es un VAR que contiene el valor 0 hasta que se cumple una condición.

En cuyo caso, el problema era simplemente que su operador de igualdad era incorrecto:

$(".pager-next a.active").click(function(event) {
    if (a != 1) {
        event.preventDefault();
    }            
});

Otros consejos

Ten cuidado:

!a evalúa a verdadero o falso. Si una conversión de a a un bool es true después !a evalúa a falso.

Todos los enteros positivos evalúan true. Asi que !a evaluará en falso. Una comparación usando doble igual == a 1 probará ese booleano !a con el booleano 1 o true. Así que si a es un entero positivo como sospecho que es entonces tu if La declaración siempre se evaluará en falso.

Si desea probar es algo, no es otra cosa que necesita cambiar el primero igual en su operador de comparación (===) ser una !.

P.ej var a = 2; if(a!==1) { // do something } <- a es 2 y, por lo tanto, la comparación if wille evalúa a verdaderas como a no es igual 1.

En su código tenemos:

var a = 2;
if(!a==1){
  // a was 2 (or boolean true by default)
  // but using ! has negated its boolean value
  // so !a evaluates to boolean false
  // which is being compared to 1 (evaluating to boolean true)
  // so this if statement will never get here
}

Espero que ayude

PD, recuerde sus operadores de comparación:

!"hello world" == 0 // true
!"hello world" === 0 // false

Actualizar

Vi tu comentario en otra publicación que decía que a es 0 Hasta que sucede algo, entonces es 1.

En este caso:

var a = 0; // integer 0 or bool false
if(!a==1){ // if the bool opposite of 0 (false) is equal to 1 (true)
  // well, opposite of false is true, so you're checking if true is equal to true
  // so this will get called
  e.preventDefault();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top