0

我有一个包含动态生成的表单的模式。它正在通过 ajax 调用加载:

$(function() {
  $('[data-toggle="modal"]').click(function(e) {
    e.preventDefault();
    var href = $(this).attr('href');
    if (href.indexOf('#') == 0) {
      $(href).modal('open');
    } else {
    $.get(href, function(data) {
      $('<div class="modal fade" id="modalR" tabindex="-1" role="dialog" aria-labelledby="modalR" aria-hidden="true">' + data + '</div>').modal();
    });
    }
  });
});

在这个加载的表单中,我有一个需要基于选择表单字段隐藏/显示的 div。我一直在使用以下代码,如果它已经在文件中,它可以正常工作。但是,当我将它添加到动态加载的模态表单时(在模态中并不总是需要它),它不会执行。

$(function() {
$('#location').hide();
  $("#type").change(function() {
    if (this.value == '12') {
        $('#location').show();
    } else {
        $('#location').hide();
    }
}); 

});

有小费吗?

4

1 回答 1

0

可能是因为当块已经在文件中时,jQuery 会检测到它并绑定事件。但是当你通过 ajax 加载它时,那是在绑定之后,所以新块不会附加任何事件。所以尝试将它放在你的页面后绑定它。我的意思是,像这样:

$.get(href, function(data) {
    $('<div class="modal fade" id="modalR" tabindex="-1" role="dialog" aria-labelledby="modalR" aria-hidden="true">' + data + '</div>').modal();

    $('#location').hide();
    $("#type").change(function() {
        if (this.value == '12') {
            $('#location').show();
        } else {
            $('#location').hide();
        }
    }); 

});
于 2013-08-30T22:59:27.720 回答