style removeattribute removeattr disabled attribute javascript jquery frameworks prototypejs

javascript - removeattribute - title css



¿De qué molestias jQuery debo tener en cuenta como usuario prototipo? (8)

(Lo único que se me ocurre es que este es el elemento en lugar de un objeto jQuery en $("...").each(function) -llama, ya que $(element) se usa con más frecuencia que el elemento. Y esa cosa extremadamente menor es solo eso.

Ejemplo de lo anterior (simplificado y sé que hay otras maneras mucho mejores de hacer esto, simplemente no podía pensar en un mejor ejemplo ahora):

// Make all divs that has foo=bar pink. $("div").each(function(){ if($(this).attr("foo") == "bar"){ $(this).css("background", "pink"); } });

each una es una función que toma una función como parámetro, esa función se llama una vez para cada elemento coincidente. En la función pasada, this refiere al elemento DOM del navegador real, pero me parece que a menudo querrás usar alguna función jQuery en cada elemento, teniendo que usar $(this) . Si esto se hubiera establecido en $(this) , obtendrías un código más corto, y aún podrías acceder al objeto del elemento DOM usando this.get(0) . Ahora veo la razón por la cual las cosas son como son, a saber, que escribir $(this) lugar de esto, no es tan engorroso, y en caso de que puedas hacer lo que quieras con el elemento DOM de la manera que es, es más rápido que de la forma en que podría haber sido, y para el otro lado no sería más rápido en el caso de que quieras $(this) .)

Estamos considerando cambiar nuestro sitio de Prototype a jQuery. Siendo muy familiar con Prototype, soy muy consciente de las cosas sobre Prototype que encuentro limitantes o molestas.

Mi pregunta para los usuarios de jQuery es: ¿Después de trabajar con jQuery por un tiempo, qué es frustrante? ¿Hay algo sobre jQuery que te haga pensar en cambiar (volver) a Prototype?


Creo que lo único que me atrapa es que cuando hago una consulta de selección para un solo elemento, tengo que recordar que devuelve una matriz de elementos, aunque sé que solo hay uno. Normalmente, esto no hace ninguna diferencia a menos que desee interactuar con el elemento directamente en lugar de hacerlo a través de métodos jQuery.


Esto es realmente solo una molestia si estás haciendo mucha manipulación DOM. PrototypeJs agrega automáticamente su API a elementos DOM, por lo que esto funciona en prototypejs (jQuery, por supuesto, no hace esto):

var el = document.createElement("div"); el.addClassName("hello"); // addClassName is a prototypejs method implemented on the native HTMLElement

Incluso sin ejecutar el elemento nativo a través de la función $ ().

PD: Debería tener en cuenta que esto no funciona en IE.


Mis dos puntos de dolor han sido el infierno, pueden ser muy confusos

$(''.myDiv'').append($(''<ul />'').append($(''<li />'').text(''content'')));

Mi otro problema común tiene que ver con el uso de JSON en jQuery, siempre extraño la última coma,

$(''.myDiv'').tabs({ option1:true, options2:false(, woops)});

Finalmente, he estado usando jQuery durante aproximadamente 6 meses y no creo que vuelva a los prototipos. Me encanta JQuery, y muchos de los trucos que utilizan me han ayudado a aprender mucho. Un buen truco que me gusta es usar literales de cadenas para llamadas a métodos, nunca hice demasiado con prototipos.

$(''.myDiv'')[(add ? ''add'' : ''remove'') + ''Class''](''redText'');


No creo que haya ningún truco real, o incluso molestias persistentes. Las otras respuestas aquí parecen confirmar esto: los problemas son causados ​​simplemente por la API ligeramente diferente y el diferente estilo de codificación de JavaScript que fomenta jQuery.

Empecé a usar Prototype hace un par de años y me pareció una revelación. Tan poderoso, tan elegante. Después de unos meses probé jQuery y descubrí qué potencia y elegancia realmente son. No recuerdo ninguna molestia. Ahora estoy trabajando en un proyecto que usa Prototype y parece un paso atrás (para ser justos, estamos usando Prototype 1.5.1).

Si invierte la pregunta: "¿Qué molestias de prototipo debo tener en cuenta como usuario de jQuery?" - obtendrías muchas más respuestas.


Nop. Nada. Nyet.


Probablemente el único problema real con el que me he encontrado es $ (esto) problemas de alcance. Por ejemplo, si está haciendo un ciclo anidado sobre elementos y subelementos utilizando la función incorporada JQuery .each (), ¿a qué se refiere $ (this)? En ese caso, se refiere al ámbito más interno, como debería ser, pero no siempre se espera.

La solución simple es simplemente almacenar en caché $ (this) en una variable antes de seguir profundizando en una cadena:

$("li").each(function() { // cache this var list_item = $(this); // get all child a tags list_item.find("a").each(function() { // scope of this now relates to a tags $(this).hide("slow"); }); });


.cada:

jQuery (necesita Index, incluso si no lo está usando):

$.each(collection, function(index, item) { item.hide(); });

Prototipo (normalmente está utilizando el elemento, por lo que puede omitir el índice):

collection.each(function(item) { item.hide(); });