Live()函数不能使用某些元素

时间:2011-08-18 10:31:52

标签: javascript jquery live jqtransform

我正在尝试将一些更改事件绑定到之前已由jqTransform转换的select元素(http://www.dfc-e.com/metiers/multimedia/opensource/jqtransform/)。

由于在此转换后change()函数不起作用,我已经遵循Code-Pal中的excellent advice。然后我尝试使用live()事件应用click函数(因为将使用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()就会停止工作。知道会发生什么事吗?

这是jqtransform之后的html代码:

<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 :(得分:0)

我没有完全相同的选择器,但似乎一切正常:

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

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

修改:已更新以使用相同的选择器

答案 1 :(得分:0)

如果您在使用jQuery live时遇到问题,可能需要查看delegate

另请查看Why You Should Never Use jQuery Live

答案 2 :(得分:0)

好吧,经过与jqTransform争夺太多项目之后,我已经切换到UniformJS。使用它更容易,我的生活更美好,天空中的颜色更明亮,当我走在任何街道时,女孩对我微笑。

我推荐它。