2013-09-24 64 views
1

我有下面的腳本,它不適用於Firefox,它似乎在Google Chrome中起作用。jQuery .on()語法並將多個參數傳遞給函數

<script> 

    $(document).ready(function(){ 
    $('#btn_2').on('click', function() {addselectable(event, 7)}); 

    $(function() { 
     $("#selectable").selectable(); 
     }); 
    }); 

    </script> 

    function addselectable (event, size) { 
     event.preventDefault(); 
     event.stopPropagation(); 
     alert('hello'); 
     var s = size; 
     var p = $('<ol>').attr('id', 'selectable'); 
     var count = 0 
     for (var i = s; i >= 0; i--) 
     { 
      count = count + 1; 
      var li = $('<li>').attr('class', 'ui-state-default').text(count); 
      $(li).appendTo(p) 
      p.append(li); 
     } 
     $(p).appendTo('body'); 
     alert('I am done'); 

//}; 

}

我怎樣才能在多個參數傳遞給我的功能「addselectable」上單擊事件,是否有這樣做的另一種方式,將在所有的瀏覽器?

+2

你從未定義'事件'。有些瀏覽器在'window'默認情況下定義了它,其他瀏覽器不這樣做。其他人將失敗,您的當前代碼。你得到的JavaScript錯誤應該是非常明顯的。 –

+0

定義「在Firefox上不起作用」。告訴我們該怎麼做。不要讓我們弄清楚你的代碼應該做什麼。請不要在代碼中發佈很多註釋掉的代碼。這只是讓我們感到困惑。這可能會讓你感到困惑。具體說明什麼沒有工作,以及它不工作。 – Pete

+0

jQuery文檔對於確定您的回調期望的參數非常有用 - http://api.jquery.com/ – ginman

回答

3

事件應該去報警功能(事件)的說法

變化

$('#btn_2').on('click', function() {addselectable(event, 7)}); 

$('#btn_2').on('click', function (event) {addselectable(event, 7)}); 

嘗試它,雖然它不是由我進行測試。

+0

謝謝!那工作。 – lboyel

3

你沒有指定event參數的實際事件處理程序:

$('#btn_2').on('click', function (event) {addselectable(event, 7)}); 

你有什麼在Chrome中的作品,因爲它模仿IE瀏覽器,並公開全球event對象。 Firefox不。

+0

downvoter可以告訴我我的答案有什麼問題嗎? – bfavaretto