jquery - 防止onclick并检索函数调用的参数

时间:2012-06-13 13:44:07

标签: javascript jquery

我们已经被要求对某些代码进行创可贴措施,所以这看起来真的很愚蠢,但请耐心等待。

我们需要阻止锚的onclick方法并检索正在进行的函数调用的参数,以便用这些参数调用不同的函数。 这是我们到目前为止的代码和HTML:

<p><a href="#" onclick="openMoreProductVideos('Title of video','VideoCode','false');return false;"><span class="txt">View all videos</span></a></p>

JS:

// undefine onclick so it is not handled with broken function
$('a[onClick^=openMoreProductVideos]').each(function () {
    this.onclick = undefined;   
});

    // grab parameters from onclick function call and submit to new function.
$('a[onClick^=openMoreProductVideos]').click(function () {
    strStart = "openMoreProductVideos(";
    strFinish = ");return false"
    srctext = $(this).parent().html();      
    var re = strStart + ".*?"+strFinish
    var newtext = srctext.match(re)[1];
    var callparams = newtext.substring(1,newtext.length-1);
    testparams(callparams);
  });

 // test function to see if parameters are working
 function testparams (a,b,c){
    console.log (a,b,c)
 }

问题是返回的字符串(callparams)被视为一个参数。我不是一名正则表达式专家,所以我希望有经验的人能够快速找到解决方案。

非常感谢。

1 个答案:

答案 0 :(得分:0)

如果callparams"'Title of video','VideoCode','false'"之类的字符串,请尝试

testparams(callparams.split(',')); 
   /* transforming string into an array 
    * ["'Title of video'", "'VideoCode'", "'false'"] 
    */
...

function testparams (pars){
   console.log (pars[0], pars[1], pars[2]);
   /* if necessary remove trailing quotes with .replace() method */
}