jQuery on.change 数组的特定元素

Posted

技术标签:

【中文标题】jQuery on.change 数组的特定元素【英文标题】:jQuery on.change specific element of array 【发布时间】:2021-06-19 15:23:18 【问题描述】:

我目前正在努力解决我的具体问题。我正在使用 Symfony Collection 实体类型和 https://symfony-collection.fuz.org/symfony3/ 捆绑包进行前端渲染。当我单击以添加新集合时,将呈现新的输入集。当不满足条件时,我需要隐藏特定的输入。为此,我正在使用 jQuery。在开始时,我声明了一组可能的 html id。

var regularityWeeksArray = [
    '#user_working_hours_weeks_0_regularity', '#user_working_hours_weeks_1_regularity',
    '#user_working_hours_weeks_2_regularity', '#user_working_hours_weeks_3_regularity'
]

然后我加入它是为了满足 jQuery 的要求,因为我不知道如何解决这个问题。我很想使用此代码来运行它,但我需要获取正在更改数组的哪个特定元素以提供该元素的函数 ID。现在我正在更改第一个,因为我不知道如何满足我的要求。

var regularityWeeksArrayToString = regularityWeeksArray.join(', ');

$(document).on('change', regularityWeeksArrayToString, function() 
    if($(this).val() === 'interim')
        showInterimWithID(0);
     else 
        hideInterimWithID(0);
    
);

您对如何做到这一点有任何想法吗?提前非常感谢,我现在真的脱发了几个小时。

//编辑:对于上下文,这就是 showsInterimWithID() 的样子,它显示特定的输入及其标签。

function showInterimWithID(id)
    $('#user_working_hours_weeks_'+ id +'_interim_from, label[for=user_working_hours_weeks_'+ id +'_interim_from]').show();
    $('#user_working_hours_weeks_'+ id +'_interim_to, label[for=user_working_hours_weeks_'+ id +'_interim_to]').show();

【问题讨论】:

【参考方案1】:

this.id 是事件目标的 ID。可以得到它在数组中的索引。

$(document).on('change', regularityWeeksArrayToString, function() 
    var index = regularityWeeksArray.indexOf(this.id);
    if($(this).val() === 'interim')
        showInterimWithID(index);
     else 
        hideInterimWithID(index);
    
);

【讨论】:

以上是关于jQuery on.change 数组的特定元素的主要内容,如果未能解决你的问题,请参考以下文章

任何人在 ios 12.2 上遇到 jquery.on('change') 或 .change() 的任何问题?

jQuery 1.8.1 - live, livequery, on + change 不工作

jQuery 收音机输入 .on('change') 触发了两次

如何使用 jquery 从“更改”事件中访问父元素

Jquery Select2,如何在 on(change) 函数中访问 ajax 数据?

JS jQuery on change获取选择选项标签的innerHTML