jquery - jQuery 是否有通配符结尾
问题描述
我有一个 jQuery 脚本,当用户从下拉框中选择时,它会更改两个 href 链接。
<script>
$(document).ready(function () {
$(":input[id*='ddlAttributes']").change(function (event) {
var masterNumber = $(this)[0].firstElementChild.value;
var itemNumber = $(this).val();
$("a[href$=" + masterNumber + "]").each(function() {
this.href = this.href.replace(masterNumber, itemNumber);
});
});
});
</script>
编辑:添加了 html
<div class="row">
<div class="col-xs-12 col-md-9">
<div class="products">
<div class="row">
<div class="col-md-6 product">
<div class="row">
<div class="col-xs-6">
<a href='/Product.aspx?Product=BR3001'>
<img src='/Handler.ashx?id=BR3001' />
</a>
</div>
<div class="col-xs-6">
<h4>
<a href='/Product.aspx?Product=BR3001'>
BR3001
</a>
</h4>
<p>
BR T-ZONE BLACK/SILVER 4.5 [W6]
</p>
<h3 class="text-right">
$0.00
</h3>
<div class="col-xs-6" style=''>
<select name="ctl00$ContentPlaceHolder$rptProducts$ctl01$ddlAttributes" id="ContentPlaceHolder_rptProducts_ddlAttributes_0">
<option value="BR3001">Size</option>
<option value="BR3001-045">4-1/2</option>
<option value="BR3001-050">5</option>
<option value="BR3001-055">5-1/2</option>
<option value="BR3001-060">6</option>
<option value="BR3001-065">6-1/2</option>
<option value="BR3001-070">7</option>
<option value="BR3001-075">7-1/2</option>
<option value="BR3001-080">8</option>
<option value="BR3001-085">8-1/2</option>
<option value="BR3001-090">9</option>
<option value="BR3001-095">9-1/2</option>
<option value="BR3001-100">10</option>
<option value="BR3001-105">10-1/2</option>
<option value="BR3001-110">11</option>
<option value="BR3001-115">11-1/2</option>
<option value="BR3001-120">12</option>
<option value="BR3001-130">13</option>
<option value="BR3001-140">14</option>
<option value="BR3001-150">15</option>
</select>
</div>
</div>
</div>
</div>
</div>
这在下拉框第一次更改时有效。但不是在连续更改时,因为链接已经更改,现在不会与结尾匹配。
主编号是这样的:BR3001
具体项目编号如:BR3001-045、BR3001-050、BR3001-055 等。
我试图让脚本在连续的选择更改上工作。任何帮助将不胜感激。提前致谢。
解决方案
我想我明白你在这里想要做什么。可能有更好的方法来使用选择器和 JQuery 来做你想做的事情。我在您的 html 中添加了一些类和 Id 选择器并稍微更改了 jquery。请参阅下面示例中的注释以了解使用选择器的另一种方式。
$(document).ready(function () {
$(":input[id*='ddlAttributes']").change(function (event) {
var linkText = "/Product.aspx?Product=";
var imageSrcBase = "/Handler.ashx?id=";
var itemNumber = $(this).val();
//Set the actual href of the links using class selector
$(".productLink").attr("href", linkText + itemNumber);
//Set the img src
$("#imgLink").attr("src", imageSrcBase + itemNumber);
//Set the link text using itme number
$("#numLink").text(itemNumber);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
<div class="col-xs-12 col-md-9">
<div class="products">
<div class="row">
<div class="col-md-6 product">
<div class="row">
<div class="col-xs-6">
<a href='/Product.aspx?Product=BR3001' class="productLink">
<img src='/Handler.ashx?id=BR3001' id="imgLink" />
</a>
</div>
<div class="col-xs-6">
<h4>
<a href='/Product.aspx?Product=BR3001' id="numLink" class="productLink">
BR3001
</a>
</h4>
<p>
BR T-ZONE BLACK/SILVER 4.5 [W6]
</p>
<h3 class="text-right">
$0.00
</h3>
<div class="col-xs-6" style=''>
<select name="ctl00$ContentPlaceHolder$rptProducts$ctl01$ddlAttributes" id="ContentPlaceHolder_rptProducts_ddlAttributes_0">
<option value="BR3001">Size</option>
<option value="BR3001-045">4-1/2</option>
<option value="BR3001-050">5</option>
<option value="BR3001-055">5-1/2</option>
<option value="BR3001-060">6</option>
<option value="BR3001-065">6-1/2</option>
<option value="BR3001-070">7</option>
<option value="BR3001-075">7-1/2</option>
<option value="BR3001-080">8</option>
<option value="BR3001-085">8-1/2</option>
<option value="BR3001-090">9</option>
<option value="BR3001-095">9-1/2</option>
<option value="BR3001-100">10</option>
<option value="BR3001-105">10-1/2</option>
<option value="BR3001-110">11</option>
<option value="BR3001-115">11-1/2</option>
<option value="BR3001-120">12</option>
<option value="BR3001-130">13</option>
<option value="BR3001-140">14</option>
<option value="BR3001-150">15</option>
</select>
</div>
</div>
</div>
</div>
</div>
推荐阅读
- python - Python3 找不到 CUDA dll 文件
- beautifulsoup - 使用 BeautifulSoup 从标签中提取数据
- c++ - 避免警告 C26451 [类型转换错误] 的最佳实践
- php - 代码没问题,但表单没有将数据提交到数据库,Laravel 项目
- c# - wpf WindowState = WindowState.Maximized 奇怪地最大化窗口
- wordpress - WordPress如何根据特定类别查询页面
- c# - Prim 的迷宫算法:为什么我必须仔细检查我的迷宫中是否包含节点?
- java - 从 Python 客户端读取时出现 java.io.EOFException
- python - 获取 pandas 合并中保留列的行索引
- autohotkey - 如何通过自动热键更改资源管理器上的分组模式