Функция Live () не работает с некоторыми элементами - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь привязать некоторые события изменения к элементу выбора, который был ранее преобразован с помощью jqTransform (http://www.dfc -e.com / metiers / multimedia / opensource / jqtransform /).

Поскольку функция change () не работает после этого преобразования, я следовал этому отличному совету от Code-Pal. Затем я пытаюсь применить функцию click к событию live () (будущие формы будут вызываться с помощью Ajax).

Пока у меня есть это, которое не работает:

$("div#caracteristicas-form-wrap div.jqTransformSelectWrapper ul li a").live('click', function(e) {
console.log("Testing");
});

Странно, это РАБОТАЕТ:

$("div#caracteristicas-form-wrap div.jqTransformSelectWrapper ul li a").bind('click', function(e) {
console.log("Testing");
});

И даже это:

$("div#caracteristicas-form-wrap div.jqTransformSelectWrapper").live('click', function(e) {
console.log("Testing");
});

Так что это не значит, что jqTransform все еще не загружен. По какой-то причине live () перестает работать, как только я выбираю элементы из списка. Есть идеи, что может произойти?

Это HTML-код после jqtransform:

<div class="jqTransformSelectWrapper" style="z-index: 10; width: 194px;">
  <div>
    <span style="width: 179px;">Tarjeta estándar</span>
    <a class="jqTransformSelectOpen" href="#"></a>
  </div>
  <ul style="width: 192px; display: none; visibility: visible; height: 125px; overflow: hidden;">
    <li>
      <a class="selected" index="0" href="#">Tarjeta estándar</a>
    </li>
    <li>
      <a index="1" href="#">Tarjetas cantos redondos</a>
    </li>
    <li>
      <a index="2" href="#">Tarjetas doble</a>
    </li>
    <li>
      <a index="3" href="#">Tarjeta PVC</a>
    </li>
    <li>
      <a index="4" href="#">Tarjeta adhesiva</a>
    </li>
  </ul>

  <select id="id-subproducto" class="jqTransformHidden" name="subproducto" style="">
    <option value="1">Tarjeta estándar</option>
    <option value="2">Tarjetas cantos redondos</option>
    <option value="3">Tarjetas doble</option>
    <option value="4">Tarjeta PVC</option>
    <option value="5">Tarjeta adhesiva</option>
  </select>
</div>

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 18 августа 2011

Если у вас возникли проблемы с jQuery live, вы можете попробовать delegate.

Также взгляните на Почему вы никогда не должны использоватьJQuery Live

0 голосов
/ 05 сентября 2011

Ну, ребята, после борьбы с jqTransform для слишком большого количества проектов я переключился на UniformJS .Работать с ним легче, моя жизнь приятнее, цвета на небе ярче, а девушки улыбаются и мне, когда я иду по любой улице.

Рекомендую.

0 голосов
/ 18 августа 2011

У меня нет точно таких же селекторов, но все, кажется, работает:

http://jsfiddle.net/HenryGarle/DeYH2/1/

$("div#caracteristicas-form-wrap div.jqTransformSelectWrapper ul li a").live('click', function(e) {
   alert("Testing");
});

Редактировать: Обновлено для использования тех же селекторов

...