2013-07-24 148 views
0

我有鏈接發送submitTask(takk,佈局)函數(它是我自己的函數,她添加值來形成併發送它)。我想結合這個功能與jQuery。我做了這樣的事情。帶參數的Jquery自定義函數

$(function() { 
    $('#edit').click(function(e) { 
     e.preventDefault(); 
     submitTask('edit','edit'); 
    }); 
}); 

<a href="#" id="edit">Link</a> 

它的工作原理,但我想改變普遍,而jQuery的功能全部元素我想(我不想定義$()。點擊()爲每在腳本)功能元素將被稱爲的onclick這樣的:

<a href="#" onclick="jqueryFunction('task','layout')>Link</a> 

因爲我仍想保留.preventdefautlFunction()。我不知道如何使用參數jQuery函數。我需要的是這樣的,但正常工作:

function jqueryFunction(task,layout){ 
$('a').preventDefault(); 
submitTask(task,layout); 
} 
+1

看看這個:http://stackoverflow.com/問題/ 12093192/how-to-create-a-jquery-function – Pieter

回答

1

其實用突兀的事件處理程序一般是不好的做法 - 你最好與你的第一個例子中去,然後用一個類來處理點擊。

例如您的標記可改爲:

<a href="#" class="customClick" id="edit">Click Me</a> 

然後jQuery代碼會是這個樣子:

$('a.customClick').on('click', function(e) { 
    e.preventDefault(); 
    var action = $(this).prop('id'); 
    submitTask(action, action); 
}); 

如果你需要定義一個佈局是不同的動作,請使用switch()聲明:

$('a.customClick').on('click', function(e) { 
    e.preventDefault(); 
    var action = $(this).prop('id'), 
     layout; 

    switch(action) 
    { 
     case 'edit': 
      layout = 'edit'; 
      break; 
    } 
    submitTask(action, layout); 
}); 
+0

但是如果我想獲得多於1個屬性,在我的例子中都是'編輯',但是如果它們不同,則只有1個ID。如何解決這個問題? – Sheryf

+0

使用'switch'語句,然後根據點擊元素的ID分配'layout'。 – BenM

+0

它的工作,但我不喜歡在jQuery的xD。也許是因爲即時開始使用這種方式,我不習慣這種編程方式。感謝幫助。 – Sheryf