jquery-动态创建的按钮不工作

jquery-动态创建的按钮不工作,jquery,Jquery,我有一段代码,当从datepicker中选择日期时,它会在p标记中插入一个链接 出于某种原因,这个动态创建的链接的.click函数不起作用-但是如果我在完全相同的位置硬编码按钮,而不是动态插入按钮,它确实起作用 你知道为什么会这样吗 $(document).ready(function(){ $( "#MR1 > #datepicker" ).datepicker({ beforeShowDay: function(date){ return [(date

我有一段代码,当从datepicker中选择日期时,它会在p标记中插入一个链接

出于某种原因,这个动态创建的链接的.click函数不起作用-但是如果我在完全相同的位置硬编码按钮,而不是动态插入按钮,它确实起作用

你知道为什么会这样吗

    $(document).ready(function(){

    $( "#MR1 > #datepicker" ).datepicker({
        beforeShowDay: function(date){ return [(date.getDay() == 1 || date.getDay() == 4), ""] },
        showOn: "button",
        buttonText: "Book now...",
        showWeek: true,
        firstDay: 1,
        onSelect: function(date) { $("#MR1 > #selecteddate").prepend("Date: " + $("#MR1 > #datepicker").val() + " - <a href='javascript:;' class='cleardate'>clear date</a>"); },
        dateFormat: "DD, d MM, yy",
        altField: "#datepickeralt",
        altFormat: "dd/mm/yy",
        navigationAsDateFormat: true,
        minDate: 0,
    });

    $("#MR1 > #selecteddate > .cleardate").click(function(){
        $("#MR1 > #selecteddate").html("");
        $("#MR1 > #datepicker").datepicker("setDate", null);
        $("#MR1 > #datepickeralt").val("");
    });

});
$(文档).ready(函数(){
$(“#MR1>#日期选择器”)。日期选择器({
beforeShowDay:function(date){return[(date.getDay()==1 | | | date.getDay()==4),“”],
展示:“按钮”,
按钮文字:“立即预订…”,
《秀周刊》:没错,
第一天:1,
onSelect:function(date){$(“#MR1>#selecteddate”).prepend(“date:+$(“#MR1>#datepicker”).val()+“-”,
日期格式:“日、日、月、年”,
altField:#DatePickerat“,
altFormat:“日/月/年”,
导航数据格式:true,
minDate:0,
});
$(“#MR1>#selecteddate>.cleardate”)。单击(函数(){
$(“#MR1>#selecteddate”).html(“”);
$(“#MR1>#datepicker”).datepicker(“setDate”,null);
$(“#MR1>#datepickerat”).val(“”);
});
});
正文代码如下

<div id="MR1">
<p id="selecteddate"></p>
<input type="text" id="datepicker" style="display:none;">
<input type="text" id="datepickeralt" disabled="disabled" style="display:none;">
</div>

您需要改用该方法

$("#MR1 > #selecteddate > .cleardate").live('click',function(){
    $("#MR1 > #selecteddate").html("");
    $("#MR1 > #datepicker").datepicker("setDate", null);
    $("#MR1 > #datepickeralt").val("");
});
jQuery事件从页面加载时生成的DOM开始工作,因此在加载之后动态生成的任何内容都将被忽略
.live()
使用
body
元素作为上下文,并查找指定选择器的任何匹配项,从而在添加内容后保持“绑定”

我有一个问题,这是一个相当常见的问题。

你需要用这个方法来代替

$("#MR1 > #selecteddate > .cleardate").live('click',function(){
    $("#MR1 > #selecteddate").html("");
    $("#MR1 > #datepicker").datepicker("setDate", null);
    $("#MR1 > #datepickeralt").val("");
});
jQuery事件从页面加载时生成的DOM开始工作,因此在加载之后动态生成的任何内容都将被忽略
.live()
使用
body
元素作为上下文,并查找指定选择器的任何匹配项,从而在添加内容后保持“绑定”


我有一个问题,这是一个相当常见的问题。

您需要使用
.live
而不是
。动态添加元素时,请单击

$("#MR1 > #selecteddate > .cleardate").live('click',function(){
        $("#MR1 > #selecteddate").html("");
        $("#MR1 > #datepicker").datepicker("setDate", null);
        $("#MR1 > #datepickeralt").val("");
    });

您需要使用
.live
而不是
。动态添加元素时,请单击

$("#MR1 > #selecteddate > .cleardate").live('click',function(){
        $("#MR1 > #selecteddate").html("");
        $("#MR1 > #datepicker").datepicker("setDate", null);
        $("#MR1 > #datepickeralt").val("");
    });

需要live方法的原因是,DOM中没有在站点开头指定元素。对于运行时中的所有新元素,您需要改用live()。查看jQuery站点上的注意事项,看看它们之间的区别:需要live方法的原因是DOM中没有在站点的开头指定元素。对于运行时中的所有新元素,您需要改用live()。查看jQuery站点上的注意事项,看看它们之间的区别: