【问题标题】:Changing onclick attribute using replace with jQuery使用 jQuery 替换更改 onclick 属性
【发布时间】:2025-12-04 03:40:01
【问题描述】:

有人知道在 onclick 属性中替换某些字符串的最佳方法是什么吗?
我需要获取当前值并替换参数内的一些文本。

例如,
我有这个链接:

<a href="#" onclick="myfunction('parameter1a','parameter1b')">My link</a>

我想要这个:

<a href="#" onclick="myfunction('parameter2a','parameter2b')">My link</a>

换句话说,我想要这样的东西:

$('a').attr('onclick', $(this).attr('onclick').replace('1', '2'));

我知道我可以做到这一点,但我需要动态检索当前元素的值:

$("a").attr('onClick', "myfunction('parameter2a','parameter2b')");

当我做了一个简单的演示时,它终于可以工作了:http://jsfiddle.net/GkWhh/4/

感谢您的解决方案!

【问题讨论】:

  • 为什么你“需要一些更有活力的东西?”
  • 您只需要知道您需要更改哪些参数并在点击函数中创建条件语句以将参数传递给您的自定义myFunction(par1, par2)
  • 为什么首先需要这样做?这个布局是如何创建的,为什么你不能改变它?总的来说,这是一种错误的做法
  • @Alexander - 你有更好的方法吗?
  • 我在jsFiddle上做了一个简单的demo。但最后它工作了!我将仔细查看我的真实代码,看看缺少什么。之前,当我添加一些目标 (see demo) 时,添加解决方案的链接没有更新参数。感谢您的帮助!

标签: jquery attributes replace onclick attr


【解决方案1】:
$('a[onclick]').attr('onclick', function(i, v){
   return v.replace(/1/g, '2');
});

http://jsfiddle.net/cj9j7/

如果您需要更动态的东西,请不要使用onclick 属性,更改onclick 属性是hackish,您可以改用click 方法。

var param = 1;
$('a').click(function(){
   // ...

   if ('wildguess') {
     param = 1;
   } else {
     param++;
   }
})

【讨论】:

  • 我还将选择器更改为a[onclick]
  • 这很奇怪,我看到它在你的 jsFiddle 上工作。但对我来说,控制台告诉我:未捕获的 TypeError: Object function onclick(event) { myfunction('parameter1a','parameter1b') } has no method 'replace'
  • @ShadGagnon 那是因为你的一些a 元素没有onclick 属性,我已经更新了选择器。
  • 我已经更新了选择器...但是问题仍然存在。我试图在 return v.replace(/1/g, '2') 它正确地向我展示了我的功能。控制台仍然显示:Uncaught TypeError: Object function onclick(event) { myfunction('parameter1a','parameter1b' } has no method 'replace'
  • @ShadGagnon 你能提供一个关于 jsfiddle 的演示吗?
【解决方案2】:

听起来确实是个坏主意,但无论如何 - 您可以使用类似的方法访问 onlick 属性的字符串值:

$('a').each(function() { this.attributes.onclick.nodeValue = this.attributes.onclick.nodeValue.replace('1', '2'); })

【讨论】:

    【解决方案3】:

    您可以这样做:http://jsfiddle.net/SJP7k/

    var atr = $('a').attr('onclick');
    var str = atr.split('1');
    var natr = str.join('2');
    $('a').attr('onclick',natr);
    

    【讨论】: