www tradusir traductor traducir spanishdict oraciones online introductor inglés ingles gratis frases español convertidor como javascript jquery html

javascript - traductor - tradusir en ingles



¿Es "loop" una palabra clave especial dentro de span? (4)

Tengo el siguiente HTML:

<span loopx=''{"operator":"maxis"}''>hello</span>

Si quiero recuperar su valor de atributo {"operator":"maxis"} , simplemente puedo usar

$(''span[loopx]'').each(function(index) { var attr = $(this).attr(''loopx''); // attr is the string "{"operator":"maxis"}" });

Sin embargo, para el siguiente HTML

<span loop=''{"operator":"maxis"}''>world</span>

Obtengo el siguiente resultado:

$(''span[loop]'').each(function(index) { var attr = $(this).attr(''loop''); // attr is the string "loop" });

Me preguntaba, si el loop es una palabra clave especial dentro del lapso?

Aquí está el código de prueba: http://jsfiddle.net/yccheok/ghggtrfq/4/


Creo que es un error de jQuery, con vainilla Js funciona sin problemas

var span = document.getElementsByTagName( ''span'' ); for ( var i = 0, len = span.length; i < len; i++ ) { var out = document.querySelector( ''#out''+ (i+1) ); out.innerHTML = span[i].getAttribute( ''loopx'' ) + span[i].getAttribute( ''loop'' ); }

<pre id="out1"></pre> <pre id="out2"></pre> <span loopx=''{"operator":"maxis"}''>hello</span> <span loop=''{"operator":"maxis"}''>world</span>


No hay ningún atributo de loop en los elementos de span : solo atributos globales.

Sin embargo, hay un atributo de loop en audio elementos de audio y video .

Para los atributos personalizados, debe usar data atributos de data definidos en HTML5.

Si nombra su atributo data-loop , puede acceder de forma nativa a través de element.dataset.loop .


Según las especificaciones, el loop es un atributo booleano , lo que significa que debe especificarlo de una de las siguientes formas **:

<span loop> <span loop=""> <span loop="loop">

Cualquier otro valor como loop="false" o loop="0" o loop=''{"operator":"maxis"}'' simplemente implica que el atributo loop está presente y que el audio / video se reproducirá.

Ahora, para los atributos booleanos, jQuery.attr simplemente devuelve el nombre del atributo. Este comportamiento está documentado y no es un error :

Con respecto a los atributos booleanos, considere un elemento DOM definido por el marcado HTML <input type="checkbox" checked="checked" /> , y suponga que está en una variable de JavaScript llamada elem :

$( elem ).attr( "checked" ) (1.6.1+) (devuelve) "checked" (Cadena) Cambiará con el estado de la casilla de verificación

Habiendo explicado eso, la solución correcta es usar los atributos de datos HTML5. jQuery analiza los atributos de datos en la carga de la página para que pueda hacer esto:

$(function() { var $span = $("span[data-loop]").first(); console.log($span.data("loop")); // Object {operator: "maxis"} console.log($span.data("loop").operator); // maxis });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <span data-loop=''{"operator":"maxis"}''>world</span>

** Tenga en cuenta que este atributo no es válido en los elementos span .


bucle es un atributo utilizado en las etiquetas de medios html5 que espera un valor booleano verdadero o falso. Espero que esta sea la razón por la que lo anterior no funciona.