jquery / javascript没有在点击时获取值

时间:2010-09-29 08:40:41

标签: javascript jquery

我需要使用链接中的“name”属性动态更改变量 - 下面的代码...

       <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, ""];
            },
        });
    });

});​

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

3 个答案:

答案 0 :(得分: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"]

答案 1 :(得分: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/

尝试

答案 2 :(得分: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  });
    });