2010-09-29 43 views
2

我需要动态改变一个变量的“名称”属性从一个链接不拾取价值 - 下面的代码...的jQuery/JavaScript的上点击

 <input type="text" class="datepicker" id="dp1"> 

     <a href="javascript:;" class="tab" name="1,2">test button</a> 

$(document).ready(function(){ 

    var pickable = { dp1: [4,5,6] }; 

    $(".tab").click(function() { 
     var test = $(this).attr("name").split(","); 
     pickable = { dp1: test }; 
    }); 

    $(".datepicker").each(function() { 
     $(this).datepicker({ 
      beforeShowDay: function(date){ 
       var day = date.getDay(), days = pickable[this.id]; 
       return [$.inArray(day, days) > -1, ""]; 
      }, 
     }); 
    }); 

});​ 

任何想法为什么这不起作用?

+0

您能得到什么?字符串“1,2”而不是? – sheeks06 2010-09-29 08:43:32

+0

不确定是诚实的...我怎么知道? – Tom 2010-09-29 08:51:25

+0

var“test”的值总是一个字符串 – Joberror 2010-09-29 08:53:14

回答

1

你可以尝试这样的

$(document).ready(function(){ 

var pickable = ["2","3","4","5"]; 

function closedDays(date){ 
    var sDate = date.getDay().toString(); 
    if ($.inArray(sDate, pickable) == -1) return [false,"",""]; 
    else return [true, ""]; 
} 

$(".tab").click(function() { 
    pickable = $(this).attr("name").split(","); 
    closedDays; 
}); 

$(".datepicker").each(function() { 
    $(this).datepicker({ 
     beforeShowDay: closedDays 
    }); 
}); 
});​ 

东西,你可以在这里尝试http://jsfiddle.net/ZKW3b/2/

1

如果您的意思是传递给click的函数未被执行,请检查该代码是否在html之前被解释。

尝试在ready功能包装代码:

$(function() { 
    var pickable = { dp1: [4, 5, 6] }; 
    $(".tab").click(function() { 
     var test = [ $(this).attr("name") ]; 
     pickable = { dp1: test }; 
    }); 
}); 

如果问题是您要的name"1, 2"字符串值,是一个数组,你需要改变你的代码位:

var pickable = { dp1: [4, 5, 6] }; 

$(".tab").click(function() { 
    var test = $(this).attr("name").split(","); 
    pickable = { dp1: test }; 
}); 

现在,值"1, 2"正在由,令牌和分隔分割转换为值列表:["1", "2"]

+0

的数组,我已经这样做了,只是没有在我发布的代码中包含它。对不起 – Tom 2010-09-29 09:09:00

+0

我看到你在说什么,但它仍然不起作用...这里是一个链接到上下文中的代码,也许这将工作... http://jsfiddle.net/BhzE5/2/ – Tom 2010-09-29 09:31:19

0

如果您打算在代码中的任何位置使用var pickable,则可能需要使用jquery data。你可以尝试这样的事情:

$(document).data('pickable', { dp1: [4, 5, 6] }); 
    $(".tab").click(function() { 
     var test = $(this).attr("name").split(','); 
     $(document).data('pickable', { dp1: test }); 
    }); 
+0

你的例子会在数组中创建一个数组:'[[“1”,“2”]]' – 2010-09-29 09:15:20

+0

是的,我删除了周围的[]。谢谢 – erickb 2010-09-29 09:17:29