0

我发现这段代码带有一个 jQuery 函数来删除onClick事件广告,tap甚至在 iPhone 中替换它。我就是不能让它工作。

我怎样才能让 iPhone 执行除 onclick 之外的那些 JavaScript?我尝试 onChange 也没有运气。

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>
4

1 回答 1

0

看起来像这条线:

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

正在传递字符串而不是函数,因为字符串来自attr(). 你可以尝试在eval这里使用,但它真的很hacky。像这样:

$(this).bind('tap', function() { eval(onclick); }); // Point taps to the onclick
于 2012-07-31T05:42:05.003 回答