Tengo algunos problemas para adjuntar manejadores de eventos en vivo a filas particulares.jQuery Traversing + Controladores de eventos en vivo
lo que tengo y lo que busco:
tengo algo de HTML que se genera dinámicamente tras página carga de la siguiente manera:
<table>
<tr>
<td></td>
</tr>
<tr>
<td class="bonus"></td>
</tr>
<tr>
<td></td>
</tr>
</table>
me gustaría tener dos eventos click
:
- Uno de filas que no son una "fila de bonificación"
- Uno de filas que tienen una "fila de bonificación" después de ellos
lo que he tratado y el problema:
Sin embargo, no puedo entender cómo usar un selector para seleccionar "elemento que tiene un elemento particular después de él" (es decir, un selector "anterior"). Por lo tanto, lo mejor que puedo llegar a decir:
- filas que no son una "fila" bonificación:
$('tr:not(:has(.bonus))')
- filas que tienen una "fila de bonificación" después de ellos:
$('tr + tr:has(.bonus)').prev()
esto es todo bien y bueno, excepto cada vez que use el método live()
en un objeto jQuery que se obtuvo a través de recorrido, en lugar de la selección puro es decir
$('tr:has(.bonus)').prev().live('click', function() {
alert('hello');
});
me sale este error:
uncaught exception: Syntax error, unrecognized expression:)
La cuestión como un ejemplo aún más mínimos:
Estaba esperando que esto se localizó en una secuencia de comandos que estoy usando, pero me he aislado de este a un ejemplo jsFiddle mínima que todavía replica el problema para mí: http://jsfiddle.net/ptvrA/
HTML:
<div></div>
<div id="target"></div>
JS:
$('#target').prev().live('click', function() {
alert('f');
});
Al parecer, de this answer que esto es una limitación conocida de live
.
Mis soluciones
Como referencia, mis soluciones son o bien:
- Marque las filas que tienen una "fila de bonificación" después de alguna manera
- Enlace el
click
a todas las filas, y verifique si hay una "fila de bonificación" después de ellas dentro del controlador.
Pero si puedo conseguir una solución "mejor", incluso por curiosidad en caso de que me encuentro con este problema en una situación diferente, se lo agradecería.
Saludos
Lo que es interesante es que si usas el selector '$ ('tr: has (.bonus)'). Prev ('tr')' no causa el error de sintaxis ... pero tampoco funciona . – mVChr