在jQuery循环中获取以某些字符串开头的id
上下文:
我需要获取一些TD元素内的动态ID,将其作为参数传递并调用特定函数。
我在TD中添加了一个类( .calcStartPrice ),以便它可以帮助我迭代它的元素:
var inputEl, eventStartPrice, exchangeRate, convertedStartPriceEl, currSymbol, decimalPlaces; jQuery(".calcStartPrice").each(function (i,e) { jQuery(e).find('span, input').each(function (a,b) { console.info(b.id); }); });
当我运行此代码时,我有以下ID:
eventStartPrice_S20_L10140 S20_L10140_startPrice exchangeRate_S20_L10140 curSymbol_S20_L10140 decPlaces_S20_L10140 converted_StartPrice_S20_L10140
现在,我想要做的是检查id是否以eventStartPrice开头,以便我将id归因于变量。
我尝试了什么:
var eventStartPrice; jQuery(".calcStartPrice").each(function (i,e) { jQuery(e).find('span, input').each(function (a,b) { //console.info(b.id); if (jQuery(b[id^="eventStartPrice"])) { //this is wrong!!! eventStartPrice = b.id; console.info(eventStartPrice); } }); });
但是它不起作用……如果id以某个字符串开头,我如何在第二次迭代中检查?
替换:
if (jQuery(b[id^="eventStartPrice"])) { //this is wrong!!!
用:
if (/^eventStartPrice/.test(b.id)) {
你可以使用正则表达式:
if (b.id.match(/^eventStartPrice/)))
试试这个:
$(b).is("[id^='eventStartPrice']")
基本上,b不是普通对象,您需要将其包装到jQuery对象中,以便可以对其执行操作。 或者,更确切地说,您尝试将b作为jQuery对象进行访问。
使用jquery split方法
id_val = b.id name = id_val.split('_');
现在name[0]
将包含’_’之前的字符。 您可以使用if语句轻松比较它
if(name[0] == "eventStartPrice") { ...... }
当你使用jQuery时,你会得到dom元素。 如果你然后创建一个jQuery对象,你可以应用所有的魔法。 这就是你的代码中缺少的东西。 所以这是我的sugestion如何重写你的function。
var eventStartPrice; jQuery(".calcStartPrice").each(function (i,e) { jQuery(e).find('span, input').each(function (a,b) { var $this = jQuery(this); if ($this.is("[id^=eventStartPrice]")) { eventStartPrice = $this.attr("id"); console.info(eventStartPrice); } }); });
你可以在这个小提琴中测试它