【问题标题】:JQuery / Javascript - ".click()" method not entirely working?JQuery / Javascript - “.click()”方法不完全有效?
【发布时间】:2013-11-11 22:29:40
【问题描述】:

起初我有一个空 div 的表,并使用 Javascript 和 JQuery,我创建了一个作品数组,无论数组中的单词是什么,我都将这些单词放入 td.这是我的html:

<div id="sideBar">
 <table id="sideTable">
        <tr><td id='row0'></td></tr>
        <tr><td id='row1'></td></tr>
        <tr><td id='row2'></td></tr>
        <tr><td id='row3'></td></tr>
        <tr><td id='row4'></td></tr>
        <tr><td id='row5'></td></tr>
        <tr><td id='row6'></td></tr>
        <tr><td id='row7'></td></tr>
        <tr><td id='row8'></td></tr>
    </table>
</div>

还有我的 Javascript 数组,如果是这样的话

var tableHeadings = ['headingOne', 'headingTwo', 'headingThree'];

然后Javascript将#row3隐藏到#row8,三个标题将分别输入到#row0、#row1和#row2。 td 采用行中最长 td 的大小。这部分代码有效!我还有两个 Javascript 函数,一个用于悬停在 td 上,另一个用于单击 td 时。将鼠标悬停在 td 上的那个,Javascript 是这样开始的

$('#sideTable td').hover(

在你点击 td 的地方,Javascript 是这样开始的

$('#sideTable td').click( function() {

问题是当你将鼠标悬停在单词上时,悬停功能是完美的,但是当我去点击td时,即使td的宽度真的很长/td里面有很多信息(说td中的信息太长了td的宽度变成200px),它只允许你点击第一个我认为td的85px。太奇怪了。即使我这样做了

#sideBar td {
    width: 120px;
}

并使每个 td 的宽度为 120px,它仍然只允许我单击 td 的前 85px。悬停是完美的,当我悬停在 td 上的那一刻,无论我悬停在哪里(无论它是否在 td 的前 85px 内),无论 td 有多长,悬停功能都能正常工作并完美执行.然而,由于某种原因,点击功能只允许我点击标题的前 85px 左右。这是为什么呢?

注意:即使我尝试像这样使用 Javascript 设置 td 的宽度

$('td').css('width','200');

它仍然只允许我点击 td 的前 85px。如果我将鼠标悬停在 td 的其余 115px 上,光标甚至不会变为指针。由于某种原因,它无法识别那里有一个 td。

CSS 是这样的

    #sideBar td {
    font-size: 12px;
}

#sideBar {
    position: absolute;
    top: 90px;
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
}

另外请注意,我使用的是 I.E8 而不是 CSS3,而且我写了很多 JS,而且非常混乱,所以如果我上传它,这个帖子会被否决。 JS 并不会真正影响 TD 的宽度或任何内容,它只是“如果 td 悬停,则执行所有这些操作,如果 td 是单击,则执行此操作”。问题不在于 JS 代码,而只是“如果点击了 td”仅适用于 td 的前 85px 左右,无论 td 是否长于此。

【问题讨论】:

  • 您应该提供更多信息。 CSS 和 JS。在诊断方面,查看代码比阅读预期和经验行为的小说更有助于恕我直言。
  • 就像 kraxor 说的那样,我们需要更多信息,但我的猜测是有些东西与 tds 重叠,所以当你点击时,事件没有到达 tds。需要查看更多内容才能确认。
  • 似乎在这里工作正常jsfiddle.net/T2Hxx
  • @kraxor 我上传了 CSS,有很多 JS,而且很乱,所以如果我上传它,这个帖子会被否决。 JS 不会真正影响 TD 的宽度或任何内容,它只是“如果 td 悬停,则执行所有这些操作,如果 td 是单击,则执行此操作”。另外,我使用的是 I.E8 而不是 CSS3,如果这有影响的话。
  • @ᾠῗᵲᄐᶌ hm 由于某种原因,我无法查看在工作中填写的 JS,我会在回家时查看它.. 有没有办法修补这个问题而不是解决它?例如,有没有办法告诉 Javascript td 右侧 td + 20px 中的所有内容都应该是可点击的?

标签: javascript jquery css html-table


【解决方案1】:

尝试编辑你的 CSS 来处理溢出:

overflow-wrap: break-word
overflow-x: visible

听起来像是 CSS 问题而不是 jquery 问题。检查元素,看看鼠标是否甚至超过了 td 的整个宽度。

【讨论】:

  • CSS 是干什么用的? #sideBar 或 #sideBar td 或 #sideBar tr?是的,我很确定这不是 JS 问题。我的 JS 基本上只是“如果 td 悬停,则执行所有这些操作,如果单击它,则执行所有这些操作”。哦,伙计,还有,那是 CSS3 吗?我没有使用 CSS3。它是针对一家公司的,该公司不使用 CSS3,并且仍然只使用 I.E 8。
  • 所以无论浏览器如何,'overflow' 和 'overflow-wrap' 都应该没问题。试试这个 - 如果在 Chrome 中右键单击 tr 标签并点击检查元素。然后转到源并将鼠标悬停在 td 标签上,它会告诉您何时何地被切断。所以你的 CSS 会反映这一点,使用溢出属性来帮助。 w3schools.com/cssref/pr_pos_overflow.asp
  • 嗯,这仍然不起作用,即使使用滚动,它仍然会出现同样的问题。
猜你喜欢
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-28
  • 2021-12-04
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多