jQuery更改事件未更新
Posted
技术标签:
【中文标题】jQuery更改事件未更新【英文标题】:jQuery change event not updating 【发布时间】:2013-06-22 19:47:04 【问题描述】:使用 jQuery 1.9.1 和 jQuery Mobile 1.3
我有一些由选择列表和文本输入组成的克隆表单元素。我需要文本输入的名称和 id 属性来更改和反映选择列表中所选项目的值。这最初适用于第一组选择列表/文本输入,但在您再次更改选择列表时无效。它也不适用于克隆的元素。
http://jsfiddle.net/mT4vw/
$(function()
$('form').on('change', '.mySelect', function()
var value = $(this).val();
$(this).nextAll('.ui-input-search').find('#search').attr(name:value, id:value);
);
);
也试过这个:
$(function()
$('.mySelect').on('change', function()
var value = $(this).val();
$('.mySelect').each(function()
$(this).nextAll('.ui-input-search').find('#search').attr(name:value, id:value);
);
);
);
总而言之,每次切换选择列表时,我都需要进行这项工作,仅到下一个文本输入。我需要它来处理初始选择列表/文本输入以及克隆实例。有没有比克隆更好的方法(代码在 jsfiddle 中)?我喜欢这种方法,因为它会禁用选择列表中任何以前选择的选项。谢谢。
【问题讨论】:
解开代码$(function ()
,这相当于.ready
,它不应该与JQM一起使用,除了它会触发一次。
【参考方案1】:
当然,它的行为符合预期。您在选择更改时更改 id,然后在下一次更改时尝试使用不再存在的旧 id 进行检索。 Insetad,您可以在选择器中使用 className 或 data-type=search
。
像这样:
$(this).nextAll('.ui-input-search').find('[data-type=search]').attr(name:value, id:value);
或者:
更改您的标记以添加一个类,例如 searchBox
:
<input type="search" name="" id="search" class="inline searchBox" value="" placeholder="Search" data-theme="d" data-inline="true">
然后使用该类选择它,该类在您的情况下不是变量,与名称/id不同
$(this).nextAll('.ui-input-search').find('.searchBox').attr(name:value, id:value);
Fiddle
【讨论】:
@Omar 谢谢,你对这个问题的原始评论也很好理解.. :) 我解开了代码,所以它现在只在 男人不确定发生了什么,在那小提琴上我反复收到此错误“未捕获的 ReferenceError:disableSelectedOption 未定义” PSL 人,太棒了。非常感谢你和@Omar,我唯一的问题是为什么 Omar 声明将它从函数中解包出来(它不能在准备好的文档上工作)并且你把它放在 $(function()) ;它有效吗? @DirtyBirdDesign 欢迎您。我相信@omar 的评论是正确的。为了让它在小提琴和桌面上工作,我相信需要 document.ready 这就是为什么它不能在小提琴中工作。我假设移动 paginit 会被触发(虽然我没有太多使用 jquery mobile 的 exp)。但是看到这个网址***.com/questions/14468659/…以上是关于jQuery更改事件未更新的主要内容,如果未能解决你的问题,请参考以下文章