【问题标题】:jQuery hover multiple ID's from php generated DIVjQuery从php生成的DIV悬停多个ID
【发布时间】:2017-04-24 16:21:51
【问题描述】:

我在使用 jQuery 脚本时遇到了一些问题。

我根据来自 SQL 的数据使用 PHP 生成了我的 div。

echo "<div class='order' id='a$i' runat='server' draggable='true' >";

鼠标悬停时,它会显示一个同样由 PHP 和 SQL 生成的不同 div。

echo "<div class='position' id='b$i2' runat='server' draggable='true'>";

然后我有一个 jQuery 脚本,它具有第二个 div 的悬停功能。 每个 div 都从 php 获取它的 ID。 Menu div 得到 a1, a2, a3....,hover div 得到 b1, b2, b3....

$(function() {

              var moveLeft = 20;
              var moveDown = 10;
              var r = 1;


              $('div#a'+r).hover(function(e) {


                $('div#b'+r).show();

              }, function() {
                $('div#b'+r).hide();

              });

              $('div#a'+r).mousemove(function(e) {
                $("div#b"+r).css('top', e.pageY + moveDown).css('left', e.pageX + moveLeft);

              });

            });

代码适用于第一个 div,或者我用 r 变量指定的 div。 我在处理页面上所有 ID 的代码时遇到问题。它们是根据 SQL 数据生成的。

https://postimg.org/image/ooqnfkx3n/

有没有办法使用 LOOP 函数来做到这一点?还是从生成的 div 中获取 ID?

提前感谢所有帮助。

【问题讨论】:

  • 是的,有一种方法可以遍历它们,但这不会很简单。如果可能的话,我建议修改 PHP,以便它为这些 div 添加一个特定的类,并使用它来轻松地循环它们。它会让你的生活更轻松,代码更不容易出错。
  • 我的 div 已经有类,当我将鼠标悬停在 ORDER 类 div 上时,它应该显示 POSITION 类 div。它们看起来像这样:postimg.org/image/ooqnfkx3n

标签: javascript php jquery sql


【解决方案1】:

使用starts with选择器

$("div[id^='a']").hover(function(event) {
    //Do your thing
}

文档:Attribute Starts With Selector [name^=”value”]

【讨论】:

  • 它只显示相同的 div。我需要它在 a1 上显示 b1,在 a2 上显示 b2,在 a3 上显示 b3 ....
  • 您需要在附加了这些动态div 元素后使用此代码。
  • 我需要从第一个 div 中指定 ID 以显示对应的 ID div。
【解决方案2】:

如何在类而不是 div 上添加悬停事件,但基于 div 添加逻辑。

$(".theclassofA").hover(function(event) {
var id = $(this).attr('id');
var temp_rel = //then get the integer 'r' from this id
var temp_id = "b"+temp_rel;
//use this temp_id to show/hide your elements
}

【讨论】:

  • 我已经指定了类,有没有办法将逻辑添加到 r 变量?
  • “r 变量的逻辑”是什么意思?如果您有一些不会损害您的 html 页面的良好唯一 ID(不是 a1),那么您可以使用下面的 philantrovert 的答案,就可以了。除此之外,您可以将事件与类相关联,然后从中获取 id、r 并执行您的操作。有道理吗?
  • 我只需要为我生成的每个 div 更改脚本中的 r 变量。其他一切都有效...如果我复制相同的脚本并仅更改 r 值(1,2,3,4,5...),它就可以工作。
  • 为绑定添加 for 循环并不是很好的方法,只需尝试一下并稍作调整以适应您的实现。 ` $(".order").hover(function(event) { var order_id = $(this).attr('id'); var position_id = "b"+order_id .replace('a',''); //调整你的代码 $('div#'+order_id ).hover(function(e) { $('div#'+position_id).show(); }, function() { $('div#'+position_id )。隐藏(); }); }); `
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2018-11-03
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多