2012-07-31 41 views
0

我發現這個代碼與jQuery的功能,以消除onClick事件廣告替換爲tap甚至在iPhone中。我無法讓它工作。如何讓iPhone在onClick事件中執行javascript?

如何讓iPhone和iPhone執行除了onclick以外的JavaScript?我試着改變,也沒有運氣。

function rebindClicks(){ 
var userAgent = navigator.userAgent.toLowerCase(); 
var isIphone = (userAgent.indexOf('iphone') != -1) ? true : false; 

if (isIphone) { 
    // For each event with an inline onclick 
    $('[onclick]').each(function() { 
     var onclick = $(this).attr('onclick'); 
     $(this).removeAttr('onclick'); // Remove the onclick attribute 
     $(this).bind("click", preventClickEvent); // See to it that clicks never happen 
     $(this).bind('tap', onclick); // Point taps to the onclick 
    }); 
} 
} 

function preventClickEvent(event) { 
event.preventDefault(); 
} 

<select name="jumpMenu" class="tableBlackWhite" id="jumpMenu" style="width:275px" onchange="MM_jumpMenu('parent',this,0)" > 
    <option value="#"><font color="#FF0000" size="3">אנא בחר שיר להשמעה</font></option> 
    <option onclick="javascript:ajax('/Songs/01.php','SongsContentArea')" value="#"> » נייס באלמו</option> 
    <option onclick="javascript:ajax('/Songs/02.php','SongsContentArea')" value="#"> » מאתונו</option> 
    <option onclick="javascript:ajax('/Songs/03.php','SongsContentArea')" value="#"> » פיה אסי</option> 
    <option onclick="javascript:ajax('/Songs/04.php','SongsContentArea')" value="#"> » טליוסאמה</option> 
    </select> 

回答

0

看起來這行:

$(this).bind('tap', onclick); // Point taps to the onclick 

是傳遞一個字符串,而不是一個功能,因爲一個字符串從attr()到來。你可以嘗試在這裏使用eval,但它真的很黑。像這樣:

$(this).bind('tap', function() { eval(onclick); }); // Point taps to the onclick 
+0

在iphone中沒有響應 – user1564732 2012-07-31 15:08:12