removeClass不能在Google Map上动态创建CheckBox

时间:2014-12-23 09:45:37

标签: javascript jquery html google-maps checkbox

我在Google地图上使用infowindow显示了5个标记。每个内容都有复选框。 当用户点击每个时,我将div内容添加到比较列表。有Remove按钮将其删除。我想在删除时取消选中。完整代码在这里JSFIDDLE

我现在有两个问题

  1. 在每次检查时,我想将他们的ID保存在隐藏的字段中,我尝试了这段不起作用的代码

           var value = [];
            var count = 0;
            $('#map-canvas input:checked').each(function() {
                value+=$(this).attr('value')+',';
                count++;
            });
            $('#cmpIds').val(value);
    
  2. 在“删除”按钮上单击“我想取消选中每个复选框并隐藏它。我有此功能对每个弹出窗口都不起作用onclick="removeAdd(this);"

2 个答案:

答案 0 :(得分:0)

$(document).on('click', '#button-id', function() {
    // your code here
});

答案 1 :(得分:0)

您的代码存在两个主要问题。首先,您正在错误地构造一个数组。为了根据复选框值构造数组,不要按字面构造它(即通过在值之间插入,)。相反,您使用.push(),即:

var value = [],
    count = 0;

$('#map-canvas input:checked').each(function() {
    value.push($(this).attr('value'));
    count++;
});
$('#cmpIds').val(value);

其次,您还应该避免使用内联JS来执行删除功能。如果要将事件处理程序绑定到动态添加的元素,请使用.on()。因此,对于注入的标记,只需删除内联JS引用:

<a class="text-success">Remove</a>

另外,我使用$(this).closest('.media')来查找.parent().parent(),因为它更详细。您可以缓存此选择器,以便jQuery不必在同一个单击事件中反复梳理DOM:

$(document).on('click', '.text-success', function() {
    var $parent = $(this).closest('.media');

    // Remove listing
    $parent.remove();

    // Uncheck associated textbox
    var parentID = $parent.attr('id'),
        checkboxID = parentID.split('_');

    $('#'+checkboxID).prop('checked', false);
});

在这里工作小提琴:http://jsfiddle.net/teddyrised/z0Lkbmyh/4/


其他说明:每次在复选框上注册更改事件时,您的value数组和count变量都会重置。我怀疑,虽然我无法确认,这不是理想的行为 - 我相信你想要随时跟踪已检查的属性。因此,您应该声明它们 .change()处理程序

var value = [],
    count = 0;

$(document).on('change', '.wrapmap-gist input:checkbox', function() {

    $('#map-canvas input:checked').each(function() {
        value.push($(this).attr('value'));
        count++;
    });
    $('#cmpIds').val(value);

    // Rest of your code here

});