首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个jQuery选择器,ID以特定字符开头

多个jQuery选择器,ID以特定字符开头
EN

Stack Overflow用户
提问于 2018-02-02 22:03:29
回答 2查看 36关注 0票数 0

我在我的第三方应用程序中遇到了这个问题。现在,第三方应用程序为我的文本字段和复选框生成了ids,如下所示:

代码语言:javascript
运行
复制
ItemQuickOrder_a91a0ce2-7fb6-4c9c-97f5-e851cf4f10a6_MultiChoiceOption_0
ItemRequired_1817888e-9d2e-4ad6-87a0-1713c7b7dd97_MultiChoiceOption_0
ItemOneOffCost_ef64a5b1-07e1-40ce-8c80-2f2ace717b4f_$CurrencyField
ItemMonthlyReoccurringCost_f60c47be-2361-47eb-92f5-9b4ec7a0c057_$CurrencyField
ItemAnnualRecurringCost_db2c2537-e1b9-40bf-badc-a09637616aaa_$CurrencyField

因此,现在我想编写一个jQuery函数,当上面的文本和复选框发生变化(有人在文本字段中输入字符,或选中/取消选中某个复选框)时,该函数将被触发。所以我写了这个测试函数:

代码语言:javascript
运行
复制
$("#ItemQuickOrder_a91a0ce2-7fb6-4c9c-97f5-e851cf4f10a6_MultiChoiceOption_0,
#ItemRequired_1817888e-9d2e-4ad6-87a0-1713c7b7dd97_MultiChoiceOption_0,
#ItemOneOffCost_ef64a5b1-07e1-40ce-8c80-2f2ace717b4f_$CurrencyField,
#ItemMonthlyReoccurringCost_f60c47be-2361-47eb-92f5-9b4ec7a0c057_$CurrencyField,
#ItemAnnualRecurringCost_db2c2537-e1b9-40bf-badc-a09637616aaa_$CurrencyField").change(function() 
{
  alert( "Handler for .change() called." );
});

但是我得到了这个错误:

代码语言:javascript
运行
复制
SyntaxError: unterminated string literal

现在我认为这个错误与我的jQuery选择器是在多行中输入的事实有关。所以我试着拆分它们,但我得到了一个错误,我不能在我的i中包含$

因此,我的问题是如何才能使我的jQuery脚本更具可读性,而是根据以特定字符开头的i来选择我的项目,因为我的i将具有以"ItemQuickOrder“或"ItemRequired”等开头的唯一字符。

EN

回答 2

Stack Overflow用户

发布于 2018-02-02 22:15:27

下面是我将使用的方法,它对我来说更具可读性。

代码语言:javascript
运行
复制
let idsBeginWith = [
  "ItemQuickOrder",
  "ItemRequired",
  "ItemOneOffCost",
  "ItemMonthlyReoccurringCost",
  "ItemAnnualRecurringCost"
];
// ES6
$(idsBeginWith.map(e=>`[id^="${e}"]`).join(",")).change(function(){
  alert( "Handler for .change() called." );
});
// ES5
$(idsBeginWith.map(function(e){ return '[id^="'+e+'"]';}).join(",")).change(function(){
  alert( "Handler for .change() called." );
});
票数 2
EN

Stack Overflow用户

发布于 2018-02-02 22:10:12

您必须使用\对$进行转义,也可以在字符串的末尾使用\在多行上定义字符串。(不过,换行符不是字符串的一部分)

代码语言:javascript
运行
复制
$("#ItemQuickOrder_a91a0ce2-7fb6-4c9c-97f5-e851cf4f10a6_MultiChoiceOption_0,\
#ItemRequired_1817888e-9d2e-4ad6-87a0-1713c7b7dd97_MultiChoiceOption_0,\
#ItemOneOffCost_ef64a5b1-07e1-40ce-8c80-2f2ace717b4f_\\$CurrencyField,\
#ItemMonthlyReoccurringCost_f60c47be-2361-47eb-92f5-9b4ec7a0c057_\\$CurrencyField,\
#ItemAnnualRecurringCost_db2c2537-e1b9-40bf-badc-a09637616aaa_\\$CurrencyField").change(function() 
{
  alert( "Handler for .change() called." );
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48584343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档