2011-08-29 34 views
1
$(function(){ 
    $('.tab2').live('click', function() { 
     $('#coverTextH3').text(data[1].H3) 
     $('#coverTextP').text(data[1].P) 
     }); 
      }); 

可以說我有一個鏈接<a href="www.link.com"></a>如何將data,一個數組的索引傳遞給一個jQuery函數,以便我不必爲每個索引[0] - [7]重複我的代碼?如何將數據從鏈接傳遞到jQuery函數?

var data = [ 
    { 
     H3: 'name', 
      p: 'more' 

    }, 
    { 
     H3: 'string', 
     p: 'more strings' 
    }] 
+0

爲什麼不嘗試使用jquery模板(如果可行的話) – frictionlesspulley

+0

是否意味着'$('.tab1')。live('click',function(){//用數據[0]})和'$('。tab2')。live('click',function(){//用data [1]})做些什麼? – zhzhzhh

回答

3

有許許多多的選擇。如果通過JavaScript附加處理程序,我會選擇基於元素的id或一些自定義屬性,而不是類。所以說,你有這樣的一些鏈接:

<a href="#" class="tab1" link-number="1">Tab 1</a> 
<a href="#" class="tab2" link-number="2">Tab 2</a> 
<a href="#" class="tab3" link-number="3">Tab 3</a>   

的javascript在這種情況下將

$(function(){ 
    $('a[link-number]').live('click', function() { 
     var index = $(this).attr('link-number') * 1 - 1; 
     $('#coverTextH3').text(data[index].H3) 
     $('#coverTextP').text(data[index].P) 
    }); 
}); 

或者,您也可以將點擊處理程序就在你的a元素聲明:

<a href="#" class="tab1" onclick="setCover(0)">Tab 1</a> 
<a href="#" class="tab2" onclick="setCover(1)">Tab 1</a> 
<a href="#" class="tab3" onclick="setCover(2)">Tab 1</a> 

和定義setCover功能是這樣的:

function setCover(index) { 
    $('#coverTextH3').text(data[index].H3) 
    $('#coverTextP').text(data[index].P) 
} 

每個選項都需要在您的htlm中進行更改。如果由於某種原因,這是不可能的,至少現在需要你的標籤範圍,這可能相當棘手。

0
<a href="javascript:someFunction(1);">Text</a> 

我不知道我確切地理解你的要求。如果這不適合,請澄清。

+0

我只是想創建一個鏈接,發送一個ID說2,到一個函數。這樣我可以使用大量的數據,因此我不必重複我的代碼。 –

2

類似的東西來這應該工作:

標記:

<a href="www.link.com" data-index="1" id="link1" /> 

的javascript:

$(function(){ 
    $('#link1').live('click', function() { 
     var idx = $(this).data('index'); 
     $('#coverTextH3').text(data[idx].H3) 
     $('#coverTextP').text(data[idx].P) 
    }); 
}); 
0

如果你的鏈路ID對應於數組中的索引順序,你可以這樣做這個:

example jsfiddle

的jQuery:

$(function() { 
    $('.tab2').live('click', function(e) { 
     e.preventDefault(); 

     // parse the integer from the ID 
     // and get the 0-based index (by subtracting 1) 
     var idx = $(this).attr('id').replace('link', '') * 1 - 1; 

     $('#coverTextH3').text(data[idx].H3) 
     $('#coverTextP').text(data[idx].p) 
    }); 
}); 

HTML:

<a href="#www.link.com" id="link1" class="tab2">Link 1</a> 
<a href="#www.link.com" id="link2" class="tab2">Link 2</a> 

<h3 id="coverTextH3"></h3> 
<p id="coverTextP"></p> 
相關問題