0

请帮助我创建一个包含多个变量的函数 - 至少两个...

我有一个表,它是用 PHP 和 MySQL 创建的……所有的 ID 都是动态创建的,这就是为什么我需要以其他方式捕获它们而不是指定它们。

一小段代码用于更好地理解表的结构 - 我已包含在jsFIDDLE中

function delete_id(id) {
    alert (id);
    var test = $(this).closest('tr').attr('id');
    alert(test);
};
4

3 回答 3

2

试试这个:

var test = $('#'+id).closest('tr').attr('id');

$(this)在您的功能中并不意味着您的想法。您需要使用id传入的function并获取该元素$('#'+id)

演示在这里

于 2013-08-30T21:34:02.117 回答
1

我相信在这里使用带有 on 方法的委托很有用。就像我们使用它一样,它不会将事件冒泡到文档中,也不会为所有 tr 或 DOM 中那些动态 tr 下的标签创建尽可能多的点击处理程序,这总体上对性能有好处。

$(document).ready(function(){
    $('.ultomonitor').on('click','a', function(){
    alert("id of div under a " + $(this).children().attr('id'));
    alert("id of tr above a " + $(this).closest('tr').attr('id'));
    });
});

工作演示

于 2013-08-30T21:52:57.137 回答
1

更好的方法

演示

HTML

<a href="#"><div id="8928392" onclick="delete_id(this)" 

js

function delete_id(el) {
    var test = $(el).closest('tr').attr('id');
    alert(test);
};

或者

纯 JavaScript 方法

演示

function delete_id(el) {
    var test = getNearestTableRowAncestor(el).id;
    alert(test);
};

function getNearestTableRowAncestor(htmlElementNode) {
    while (htmlElementNode) {
        htmlElementNode = htmlElementNode.parentNode;
        if (htmlElementNode.tagName.toLowerCase() === 'tr') {
            return htmlElementNode;
        }
    }
    return undefined;
}
于 2013-08-31T09:58:22.580 回答