【问题标题】:Listen for change events in forms: JQuery侦听表单中的更改事件:JQuery
【发布时间】:2009-10-12 02:40:17
【问题描述】:

我有一个 id 为“wizard”的表单——我只有这个表单中的选择元素。此表单位于使用 JQuery plugin fancybox 的灯箱中:

我想知道何时使用 JQuery 更改了这些。我怎样才能做到这一点?我目前有:

$('form#wizard select[name=servers], form#wizard select[name=cores]').change(function() {
var channels = parseInt($('form#wizard select[name=servers]').val(), 10) * parseInt($('form#wizard select[name=cores]').val(), 10);
$('#yellow').val(channels);
});

编辑 - 我将上面的内容包裹在$(document).ready(function() {...}

但是,它不起作用,甚至没有运行。我已经在里面放了警报,但它们从来没有出现过。仅当以上是我已删除 display:none 的 div 时,以上才有效,奇怪!所以我正在寻找一种不同的实现来解决这个问题,因为我需要那个灯箱。

我真的需要这方面的帮助。

谢谢大家

【问题讨论】:

    标签: javascript jquery html fancybox


    【解决方案1】:

    jQuery change 函数仅绑定在 domready 事件触发时存在的那些元素。如果您使用的灯箱插件是动态创建元素,您应该使用 jQuery 的 live 函数“将您的处理程序绑定到所有当前和未来匹配的元素”。

    改变这个:

    $('your selector').change(function() { /* code ... */ });
    

    用这个:

    $('your selector').live('change', function() { /* code ... */ });
    

    【讨论】:

    • 太棒了!这工作得更好,但似乎它只考虑一次更改?这应该发生吗?
    • 实际上它可以工作,但是id为“yellow”的span元素没有更新,当我关闭lightox并重新启动它时它会更新?更改后如何使其生效?
    • 我的猜测是,id 为“yellow”的跨度被灯箱插件复制,这意味着您最终会得到两个(或更多)具有相同 id 的跨度元素。由于 id 应该是唯一的,因此 jQuery 只会更新您的原始(隐藏)范围。尝试使用 class 而不是 id。
    • 你的意思是给它一个黄色的类并通过类名引用它吗?
    • 对不起,我是菜鸟 - 我如何指代课程?同样的方式?
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2011-01-11
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多