【问题标题】:JQuery live not working with Jqtransform select while adding dynamic controlsJQuery live 在添加动态控件时无法使用 Jqtransform select
【发布时间】:2011-09-22 05:34:46
【问题描述】:

我有一个功能,我们在单击表格中的添加行按钮时添加动态行。 我的问题是我必须在新行中更改我的选择列表时提醒一条消息,但是当我们使用 Jquery 实时点击时它不起作用。但它适用于使用 Jquery 绑定单击时未动态添加的所有其他选择框。谁能帮我解决这个问题?

在我的项目中,我们使用 Jqtransform 来格式化 html 控件。

到目前为止我所做的是

    $('div.jqTransformSelectWrapper ul li a').live('click',function() {
        alert('message');}
    });

【问题讨论】:

  • 尝试使用JQuery's live 而不是bind
  • 有一个疑问是否是 Jqtransform.js 的错误?
  • 这是 Jqtransform 的一个错误

标签: jquery jqtransform


【解决方案1】:

我已经通过修改 Jqtransform.js 文件解决了这个问题,方法是通过执行以下操作触发选择列表的更改事件。实际上它是关于 Jqtransform.js 的一个错误

如果您看到我的这篇文章,您可能知道 jqtransform 是什么,并且您可能正在为下拉列表的更改事件而苦苦挣扎。

它不起作用的原因是 jqtransform 使用无序列表创建了一个下拉列表,然后它隐藏了您的下拉列表。

修复其实很简单。

打开您的 jquery.jqtransform.js 文件并找到以下行:

/* Fire the onchange event */
if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) {
     $select[0].selectedIndex = $(this).attr('index');
     $select[0].onchange();
}

现在只需在该行下方添加以下内容:

/* Fire the change event */
if ($select[0].selectedIndex != $(this).attr('index')) {
     $select[0].selectedIndex = $(this).attr('index');
     $($select[0]).trigger('change');
}

【讨论】:

    【解决方案2】:

    改用 jQuery delegate()。由于许多原因,它比live 更好。也请使用console.log() 而不是alert() 进行调试!

    $('div.jqTransformSelectWrapper ul li').delegate('a', 'click',function() {
            console.log('message');}
        });
    

    【讨论】:

    • :- 我已经尝试过您的代码,但很遗憾地说它不适用于动态添加的选择框以及已经存在的选择框。
    猜你喜欢
    • 2012-02-03
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2010-10-17
    • 2011-09-27
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多