2012-11-15 42 views
10

我想將一個值傳遞給Jquery函數。 以下是JavaScript示例代碼。我想將此javascript函數轉換爲jquery函數。我如何將狀態名稱傳遞給jQuery的onclick函數?如何將參數傳遞給JQuery函數?

<a onclick="showState('state_name')">ADD STATE </a> 

function showState(state_name){ 
openbox_state(state_name); 
} 

請幫幫我。

回答

12

你並不真的清楚你是否有一系列錨添加不同的狀態,還是......?

如果你這樣做,你可以做這樣的事情,記錄相應的狀態名稱爲每個鏈接:

<a data-stateName="state_name">ADD STATE </a> 

然後在JS,使用jQuery:

$(document).ready(function() { 
    $("a[data-stateName]").click(function() { 
     openbox_state($(this).attr("data-stateName")); 
    }); 
}); 

這消除了內聯JavaScript中的JavaScript,然後使用jQuery將點擊處理程序綁定到那些具有data-stateName屬性的<a>元素。處理程序然後獲取該屬性的值以傳遞給openbox_state()函數。

文檔就緒處理程序確保在文檔實際就緒之前,即在元素已被解析並可從JS訪問之後,錨點單擊綁定纔會發生。 (如果你把你的JS腳本塊在body元素的最後,你不需要準備處理程序。)

+0

如果你願意的話,你也可以'$(this).data('stateName')' –

+0

@muistooshort - True。I並沒有這樣做,因爲我習慣於使用'.data()'來檢索之前用'.data()'設置的值,而不是屬性值。在這種情況下並不重要,但是我不喜歡'.data()'嘗試aut的方式omatic類型轉換,用於檢索html屬性。 – nnnnnn

+0

我聽說你在「軟件假裝比它更聰明」的一部分,我更喜歡誠實和一貫的愚蠢:) –

1

像這樣:

$('#MyID').click(function() { 

     var StateName = $(this).text(); 
     showState(StateName);  
    }); 

然後爲HTML,你可以把一些ID是這樣的:

<a id="MyID">ADD STATE </a> 

或者,如果你有很多國家(我以爲是你」重新嘗試做),那麼你可以通過引用CSS類像這樣的鏈接:

<a class="StateSelector">ADD STATE </a> 

然後jQuery代碼BECO MES:

$('.StateSelector').click(function() { 

     var StateName = $(this).text(); 
     showState(StateName);   
}); 

要連接的事件處理,你可以把jQuery代碼在文檔準備功能是這樣的:

$(document).ready(function() { 

    $('.StateSelector').click(function() { 

      var StateName = $(this).text(); 
      showState(StateName);   
    }); 
}); 
+0

請問您可以提供這行的相應代碼,請ADD STATE sjkon

+0

不需要onclick =「showState(...),jquery爲您處理事件,您可能需要在您的代碼中添加一些ID HTML參考鏈接;看編輯 – frenchie

+0

ok。非常感謝。 – sjkon

0
<a>Montana</a> 

$('a').on('click', function(){ 
    var state = this.text ; // OR $(this).text(); OR $(this).html(); 
    showState(state); 
}); 
1

如果您有多個a像這樣不同的參數。

<a onclick="showState('Delhi')">ADD STATE</a> 
<a onclick="showState('Punjab')">ADD STATE</a> 
<a onclick="showState('Gujrat')">ADD STATE</a> 

function showState(state_name){ 
openbox_state(state_name); 
} 

那麼你可以使用自定義屬性,這樣

<a state="Delhi">ADD STATE</a> 
<a state="Punjab">ADD STATE</a> 
<a state="Gujrat">ADD STATE</a> 

$('a').click(function() { 
    var StateName = $(this).attr("state"); 
    openbox_state(StateName); 
}); 
+0

我覺得數據屬性(''data-state="...">'和'$(this)。 data('state')')會更好,並且會給你啓動有效的HTML。 –

2

你可以做這樣的事情:

<a onclick="showState()" id="florida">ADD STATE </a> 

function showState(state_name){ 
    var state_name = $(this).attr('id') 
    openbox_state(state_name); 
} 

此功能將檢索鏈接中的「id」值。然後您可以將該值傳遞到您的「openbox_state()」函數。:-)