2011-07-15 56 views
-1

我想重用我所做的功能,但還沒有任何幫助。重用一個jQuery腳本

這是我的index.html。

<html> 
<head> 
<script src="jquery-1.5.1.js")" type="text/javascript"></script> 
<script src="JqueryScript.js")" type="text/javascript"></script> 
<script type="text/javascript"> 
    //MYLIBRARY.init(['#button1']); 
    execute(['#button1']); 
    execute(['#button2']); 
</script> 
</head> 
<body> 
<button type="button" id="button1">Click Me!</button> 
<button type="button" id="button2">Click Me!</button> 
</body> 
</html> 

這是我的腳本。

function execute (Args){ 
    _args = Args; 
    $(function() { 
     $(_args[0]).click(function() { 
      alert("hello " + _args[0]); 
      return false; 
     }); 
    }); 
} 

問題總是觸發第二個警報窗口(#button2)。我如何使它與兩個警報窗口一起工作?

謝謝先進。

+3

你是什麼意思重用更好?你想做什麼? – Jaime

+3

你有問題嗎,如果是的話,它是什麼? –

回答

2

我的猜測是,你想知道爲什麼兩個按鈕發出警報相同的輸出。因爲_args全球。因此第二個調用將覆蓋_args

使用var,使其本地:

var _args = Args; 

你的代碼可能仍有待提高(see @Town's answer),但這應該讓你開始。


你也有你的HTML錯誤

<script src="jquery-1.5.1.js")" type="text/javascript"></script> 
<!--       ^^        --> 
<script src="JqueryScript.js")" type="text/javascript"></script> 
<!--       ^^        --> 
+1

+1費利克斯,我只是準備一個演示[這裏](http://jsfiddle.net/Town/e78Aa/):) – Town

+0

謝謝你們!它就這麼簡單:)! –

2

你究竟想要做什麼?

從我所看到的,你可以實現相同的功能,你有什麼用簡單:

$(function() { 
    $('button').click(function() { 
     alert("hello #" + this.id); 
    }); 
}); 

Example

0

看起來像C到我:)

你會用

<script type="text/javascript"> 
$(function() { 
    execute('#button1'); 
    execute('#button2'); 
} 

function execute(buttonId) 
{ 
    $(buttonId).click(function() { alert('Hello ' + this.id); }); 

} 

</script> 
+1

'this.attr('id')'不起作用。在click處理程序中,this指向DOM元素,但是attr是jQuery方法。 –

+0

你可以簡單地使用'this.id'(查看我的答案),或者,如果你非常喜歡jQuery,甚至在沒有必要的時候也想使用它:'$(this).attr('id')'。 – Town

+0

我非常喜歡jQuery!我想吻它!但足夠公平的是,我沒有測試我的代碼,我認爲這是在這種情況下的jQuery對象。現在修復。 –