Si las condiciones falsas, entonces prevenir el valor predeterminado
-
28-10-2019 - |
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.
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();
}