2011-08-29 140 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> 
相关问题