查找动态添加元素的索引

时间:2015-07-06 12:36:18

标签: javascript jquery html css

我需要能够识别单击哪个动态添加的复选框(通过索引或名称或其他)。这是我在类似问题上发现的小提琴:JSFiddle

我希望它显示为"这是第3个复选框"而不只是"点击"。这甚至可能吗?

我已经尝试$(this).index(),但没有运气。

3 个答案:

答案 0 :(得分:4)

首先,您可以使用index()来获取匹配集中当前元素的索引。从那里你可以使用辅助函数来格式化要显示的序号。试试这个:

$(document).on('change', '[type=checkbox]', function (e) {
    alert('This is the ' + getOrdinal($(this).index('[type=checkbox]') + 1) + ' checkbox');
});

function getOrdinal(n) {
    var s = ["th", "st", "nd", "rd"],
        v = n % 100;
    return n + (s[(v - 20) % 10] || s[v] || s[0]);
}

Example fiddle

答案 1 :(得分:1)

嗯,罗里加快了速度。这是我的fiddle:)

HTML

<button id="append">Append</button>
<div class="wrapper"></div>
<span></span>

JS

var checkbox = $('<input/>', {type : 'checkbox'});

$('#append').click(function(){
    $('.wrapper').append(checkbox.clone()).append('checkbox');
});

$(document).on('change', 'input[type=checkbox]', function(){
    $('span').text('Index: ' + $(this).index());
});

答案 2 :(得分:1)

你在这里:

var checkbox = '<label><input type="checkbox" />Checkbox</label>';
$(document).on('click', '.add', function () {
    $('#group').append(checkbox);
    $('[type=checkbox]').checkboxradio().trigger('create');
    $('#group').controlgroup().trigger('create');
});
var symbols = {
    1: 'st',
    2: 'nd',
    3: 'rd',
    4: 'th'
};
$(document).on('change', '[type=checkbox]', function (e) {
    var index = $('[type=checkbox]').index($(this)) + 1;
    var symbol = index >= 4 ? symbols[4] : symbols[index];
    var str = 'This is the ' + index + symbol + ' checkbox';
    alert(str);
});

希望得到这个帮助。