GridView生成表:
<table id="ctl00_centerContent_GridView1">
<tr>
<th scope="col">
<!-- COLUMN INFORMATION -->
</th>
</tr>
<tr>
<td style="font-weight:bold;"><a href="icard.aspx?cid=34&cpid=345&ccid=908">Insurance 1</a></td> <!-- link color by default is blue and turns orange on hover -->
<td align="center"> </td>
<td align="center">Y</td>
<td>908 as ave</td>
<td align="center">N</td>
<td align="center">N</td>
<td align="center">Y</td>
<td>Electronic</td>
<td style="white-space:nowrap;">090-093-2311</td>
<td> </td>
</tr>
<tr>
<td style="font-weight:bold;"><a href="icard.aspx?cid=34&cpid=345&ccid=542">Insurance 2</a></td>
<td align="center"> </td>
<td align="center">Y</td>
<td>908 as ave</td>
<td align="center">N</td>
<td align="center">N</td>
<td align="center">Y</td>
<td>Electronic</td>
<td style="white-space:nowrap;">090-093-2311</td>
<td> </td>
</tr>
<tr>
<td style="font-weight:bold;"><a href="icard.aspx?cid=34&cpid=345&ccid=587">Insurance 3</a></td>
<td align="center"> </td>
<td align="center">Y</td>
<td>908 as ave</td>
<td align="center">N</td>
<td align="center">N</td>
<td align="center">Y</td>
<td>Electronic</td>
<td style="white-space:nowrap;">090-093-2311</td>
<td> </td>
</tr>
<tr>
<td style="font-weight:bold;"><a href="icard.aspx?cid=34&cpid=345&ccid=125">Insurance 4</a></td>
<td align="center"> </td>
<td align="center">Y</td>
<td>908 as ave</td>
<td align="center">N</td>
<td align="center">N</td>
<td align="center">Y</td>
<td>Electronic</td>
<td style="white-space:nowrap;">090-093-2311</td>
<td> </td>
</tr>
</table>
如何添加一个JQuery脚本,该脚本从每行获取url并检查ccid
值,如果它是542
或587
,则该链接不应该链接到任何地方,字体颜色应为黑色,光标应为默认值(箭头)。
例如,对于第二行,<a href="icard.aspx?cid=34&cpid=345&ccid=542">Insurance 2</a>
应为<a href="javascript:void(0);" style="color: #000; cursor: default;">Insurance 2</a>
脚本(开始写但需要一些帮助):
$("#ctl00_centerContent_GridView1 tr td").each(function() {
var url = $(this).attr("href");
var cid = getParameterByName('ccid');
/* HOW CAN I REPLACE THE URL OF THE ANCHOR to "javascript:void(0);" IF "cid" is 542 or 587? */
$(this).closest('a').css('color', 'black'); //will this work?
$(this).closest('a').css('cursor', 'default'); //will this work?
});
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
Javascript:void(0);
cid
是542或587。答案 0 :(得分:2)
您可以使用.attr
设置属性(此处也不需要2次调用.css
):
$(this).closest('a')
.attr('href','javascript:void(0)')
.css({color:'black',cursor:'default'});
您的代码需要进行一些更改才能执行您想要的操作,因为当前它正在查找当前页面的 url中的ccid
变量 - 而不是{{1属性。
首先,将href
更改为仅查看each
元素:
a
接下来,更改您的$("#ctl00_centerContent_GridView1 tr td a").each(function() {
----------------------------------------^ here
以获取您正在寻找的网址和参数:
getParameterByName
最后,如果function getParameterByName(url, name) {
console.log(url)
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(url);
return results ? decodeURIComponent(results[1].replace(/\+/g, " ")) : "";
}
符合您的要求,请将您的代码更改为仅执行此答案中最初指定的操作(请注意删除ccid
,因为我们现在只关注{{ 1}}元素):
closest('a')
下面的实例。
a
&#13;
$("#ctl00_centerContent_GridView1 tr td a").each(function() {
var url = $(this).attr("href");
var cid = getParameterByName(url, 'ccid');
if (cid == "542" || cid == "587"){
$(this)
.attr('href','javascript:void(0)')
.css({color:'black',cursor:'default'});
}
});
&#13;
答案 1 :(得分:1)
让我们一步一步。
迭代应该超过a
元素,因为你没有任何不相关的锚点,所以好的选择器将是
#ctl00_centerContent_GridView1 tr td a
提取ccid
这样的值应该起作用的值:
var ccidValue = getParameterByName($(this).attr("href"), "ccid");
请务必更新getParameterByName
以接受url参数,而不是始终使用当前页面网址:
function getParameterByName(url, name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(url);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
然后检查值是&#34; 542&#34;或&#34; 587&#34;,并替换:
if (ccidValue === "542" || ccidValue === "587") {
$(this).attr("href", "javascript:void(0);")
}
如果你想要应用一些样式,我真的建议定义一个类并使用它而不是一些内联脚本:
disabledCardLink {cursor: default; color: black;}
$(this).addClass("disabledCardLink");
答案 2 :(得分:1)
试试这个:
$(function(){
$('a[href*="ccid=542"]', 'a[href*="ccid=587"]').each(function(){
DisableLink($(this));
});
});
function DisableLink(elem){
elem.parent().html('<a href="javascript:void(0);" style="color: #000;cursor: default;">' + elem.text() + '</a>');
}
使用jquery&#39;包含&#39;选择器选择包含您要查找的ccids的所有锚点,并将每个元素传递给一个方法,该方法用修改后的锚标记替换其父td元素的html。