javascript:通过函数执行jquery代码变量

时间:2012-03-23 22:27:28

标签: javascript jquery

我不知道好的头衔但继续解释

我有这个链接

<a href="#" class="link" effect="show"> Link1 </a>
<a href="#" class="link" effect="fadeIn"> Link2 </a>
<a href="#" class="link" effect="slideDown"> Link2 </a>

我想要点击.link使用效果测量

$('a').hide();
$('.link').click(function(){
     var effect = $(this).attr("effect");
     /* 
       what should i do here  not conditions to make if effect is show show this link
       if its fadeIn   do fade in  etc

      */
})  ;

3 个答案:

答案 0 :(得分:3)

这应该有效:

var effect = $(this).attr("effect");
$(this)[effect]();

请参阅http://jsfiddle.net/sGWr5/

答案 1 :(得分:1)

你不能只将自己的属性添加到html元素中,这很糟糕。 HTML5通过'data'属性支持此功能。所以,如果你得到了html5支持,那就像shit:

<a href="#" class="link" data-effect="fadeIn"> Link1 </a>

的Javascript

$('a.link').on('click', function() { 
    var effect = $(this).data('effect');
    switch(effect) {
       case 'fadeIn':
           $('elementtoshow').fadeIn();
       break;

       case 'show':
           $('elementtoshow').show();
       break;

       // etc
    }
});

如果你真的不想因为某些原因使用html5,请将效果存储在元素id中,然后抓住它:

$(this).attr('id');

代替。

答案 2 :(得分:0)

为什么使用$('a').hide();?一旦你点击其中一个链接,你想要隐藏所有链接吗?如果是这样,这应该有效,你只是订单错了

$('.link').click(function(){
    var effect = $(this).attr("effect");
    $('a.link').hide();
    alert(effect);

})  ;