2012-06-13 63 views
0

我們已經被要求在某些代碼中使用一種創可貼的措施,所以這會看起來很愚蠢,但卻忍無可忍。jquery - 防止onclick和檢索函數調用的參數

我們需要防止錨點的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)被視爲一個參數。我不是一個正則表達式專家,所以我希望有比我更多經驗的人可以很快看到解決方案。

非常感謝。

+0

做的console.log(callparams)testparamps調用看到的結果 –

+0

我沒有直接之前。它是一個字符串的所有參數。即:「'視頻標題','VideoCode','false'」當然是 – septemberbrain

回答

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 */ 
} 
+0

!我一直在盯着這個問題很久,我看不到這個簡單的解決方案。謝謝! – septemberbrain

+0

所以如果這有助於你可以考慮upvote和/或接受這個答案 – fcalderan