我有一个页面通过iframe从预先存在的内容管理系统中提取一页html内容,其内容我无法直接更改。我想使用jquery动态地改变一些链接和按钮位置。
对于页面中的链接,我能够更改
的href attr值<a href="/content.asp">more</a>
从content.asp到content2.asp使用
$("a[href^='/content.asp']")
.each(function() { this.href = this.href.replace("content.asp", "content2.asp"); });
但是,拉入的页面也有包含javascript onclick功能的表单按钮,例如
<INPUT type="button" value="Add to basket" onClick="document.location='/shopping-basket.asp?mode=add&id_Product=1076';">
我基本上想用jquery来选择任何这样的按钮并将shopping-basket.asp更改为shopping-basket2.asp
如何选择这些按钮/ onclick功能并更改位置字符串?
答案 0 :(得分:3)
对此解决方案并不感到自豪,但它有效....
var getid = /id_Product=(\d+)/;
$('input[type="button"]').each(function() {
var onclick = String(this.onclick);
var id = onclick.match(getid);
if(id) {
this.onclick = function() {
window.location = "/shopping-basket2.asp?mode=add&id_Product=" + id[1];
};
}
});
答案 1 :(得分:1)
http://docs.jquery.com/Selectors/attributeContains#attributevalue
$("input[onClick*='shopping-basket.asp']").each( ... )
答案 2 :(得分:0)
为您的按钮添加一个唯一的id
,然后从javascript脚本中引用它:
document.getElementById("idOfButton").onClick
只需将值设置为新的文本字符串。
答案 3 :(得分:0)
我认为我会更新这个答案,因为我在JQuery 1.4.1中尝试了几种组合
1)onclick = function() - 不工作
$("input").each(function() {
$(this).onclick = function() {
window.location.href= 'http://www.google.com';
return false;
}
}
2)$ newclick = eval(...)无法正常工作
$("input").each(function() {
$jscript = "window.location.href= 'http://www.google.com'; return false;"
$newclick = eval("(function(){" + $jscript + "});");
$(this).onclick = newclick;
}
顺便说一句。 $ newclick被评估为未定义
3)在JQuery 1.4.1中有效的新答案
$("input").each(function() {
$(this).click(function() {
window.location.href = "http://www.google.com";
return false;
});
我搜索了JQuery API,没有onclick文档。看起来像click()是要走的路。 如果我犯了任何错误,请告诉我。
干杯
答案 4 :(得分:-1)
使用.attr方法更改属性。
$("a").each(function(){
$(this).attr("href","content.asp");
});
您也应该能够替换硬编码的onClick文本。要选择这些按钮,您可以抓住所有按钮:
$("input.convertMe").each(function(){...});
或者您可以将类添加到您特别感兴趣的按钮中:
<input type="button" class="convertMe"...>
完成这两项中的任何一项后,您只需运行每个测试其onClick属性,并确定是否需要进行任何更改:
$("input.convertMe").each(function(){
// Test onClick attr, and replace string.
});