gpt4 book ai didi

javascript - 两个函数不能一起工作,但没有错误

转载 作者:行者123 更新时间:2023-11-28 02:07:20 24 4
gpt4 key购买 nike

我有几个 JavaScript 函数:

  • 显示/隐藏一些表格行
  • 添加新行

两者都在同一页面上工作,但在特定情况下不工作。

这是fiddle 下面的代码:

/*************** show/hide sections ***************/
$('.arrow').click(function(event) {
var sec_id = $(this).attr('id').split('.')[0]; // admin.link -> admin

if ($(this).closest('td').attr('class') == 'subtitle')
$('.s_'+sec_id).toggle(); // toggle hide/show for 1 item (section)
else
$(this).closest('tr').nextUntil('tr:not(.s_' + sec_id+')').toggle();

});

/*************** Add rows ***************/
$('.add_row').click(function(event) {
var sid = $(this).attr('sid'); // the id of the <tbody>
var tbody = document.getElementById(sid); // the <tbody> to add rows to

// === GENERATE NEW NAMES for inputs
// get the name of the first input in the last row
var rows = tbody.rows;
var rowinput = rows[rows.length-1].getElementsByTagName('INPUT');
// split name into array
var name_piece = rowinput[0].name.split('][');
// create name for next row; check if last row is a blank row
var reg = new RegExp('^[0-9]+$');
if (reg.test(name_piece[1])) // if integer
var iteration = parseInt(name_piece[1], 10) + 1; // convert to int with base 10
else
iteration = 1;
if (iteration < 10)
iteration = '0'+iteration; // add left padding to ensure sort order
var front = 'items['+sid.substring(2)+']['+iteration+']'; // front of input name (remove the 's_' from name)
// END GENERATE NEW NAMES for inputs

// === CREATE ROW
var row = document.createElement('tr'); // create a row
var td1 = document.createElement('td'); // create first cell
td1.setAttribute('colSpan', 2);
td1.innerHTML = '<input type="text" name="'+front+'[desc]" maxlength="100" />';
var td2 = document.createElement('td'); // create second cell
td2.innerHTML = '<input type="text" name="'+front+'[price]" maxlength="9" onChange="calc_ttl()" class="right small" />';
var td3 = document.createElement('td'); // create third cell
td3.setAttribute('colSpan', 3);
// END CREATE ROW

// output
row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);
tbody.appendChild(row);
});

在 fiddle 中,您将看到 3 个链接,所有这些链接都可以正常工作。唯一的异常(exception)是,如果我在显示隐藏行时添加一行;例如:

  1. 点击“小节”以显示行
  2. 点击“添加行”
  3. 点击“小节”隐藏行<-- 此处失败

从那时起,除非我重新加载页面,否则“小节”链接将不再有效。代码检查完毕,Firebug 没有报告任何错误,所以我不知所措。非常感谢任何建议。

最佳答案

问题不在于您在此处发布的 jQuery 代码。它位于 HTML 中。在你的 fiddle 中你有:

<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" class="s_grp_2d_ttl_asset" style="display: none;">

一旦该行可见,只要鼠标移到该行上,s_grp_2d_ttl_asset 类就会被 highlight 类替换,这使得您的点击事件停止在第一个元素。如果您改用 addClass、removeClass 或toggleClass 函数,则可以在不完全删除原始类的情况下进行更改。

关于javascript - 两个函数不能一起工作,但没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com