【问题标题】:jQuery Id selectorsjQuery ID 选择器
【发布时间】:2015-08-19 13:10:06
【问题描述】:

如果我在 ID 为 #ASC-01 的 img 上进行鼠标输入,我想将具有相同 ID 但路径不同的类添加到 li,可以这样做吗?我的意思是用大括号写一个路径,看代码。

    $(".pile img#ASC-01").mouseenter(function(){
    $(".option ul li#ASC-01").addClass("highlight_option");
});

感谢您的帮助

【问题讨论】:

  • 不,因为您不能为多个元素提供相同的 id。 id 的值在整个页面中必须是唯一的。
  • 好的,谢谢帮助,我会做一个唯一的ID,但是我可以使用路径方法吗?
  • 如果你知道 id 值,那么选择器中就不需要其他任何东西 - 因为 id 是唯一的!
  • 是的,我知道,但问题是是否可以使用路径(只是想知道)
  • 是的,有可能。 (这并不是真正的“JavaScript 语法”问题;它与 CSS 选择器有关。)但无论如何,当然,在涉及 id 的选择器中使用关系运算符是可以的,有时它确实有意义(例如,如果您想查看如果某些已知元素以某种特定方式出现在页面上,而不是其他方式)。

标签: javascript jquery jquery-selectors


【解决方案1】:

是的,有可能,但这不是解决此问题的好方法/方法。 DOM 中不能有两个具有相同 id 的元素。

我建议你这样做:

  1. 不要为您的图像提供重复的 id,而是放置一个属性 引用 li 对象,如下所示:

    <img src="foo.jpg" imageFor="ASC-01">
    
  2. 然后在您的事件触发时,像这样查询 li:

    $(".pile img").mouseenter(function(){
        imageLiFor = $(this).attr('imageFor');
        $("#"+imageLiFor).addClass("highlight_option");
        // Note that you don't need the ".option ul li" anymore because you have a unique id.
    });
    

因此,这样您就可以摆脱重复的 id 并保持您的代码干净易懂。

希望我有所帮助。祝你今天过得愉快! :-)

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 2010-10-11
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多