使用jquery按id或类选择嵌套元素

时间:2016-11-29 17:04:12

标签: javascript jquery jquery-2.0

我对jquery如何搜索DOM感到有点困惑。 它是从根节点中选择,类似于XPath / selector,还是从当前的位置选择,无论它们在哪里,类似于XPath //选择器?

我有以下设置:

<body>
    <div id="contentSection">
    //A bunch of nested DIVs follow
           <div id="parentDIV">
                <span>Selector1</span>
                <select class="selector" id="first">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>                
                </select>

                <span>Selector2</span>
                <select class="selector" id="second">
                    <option value="A">A</option>
                    <option value="B">B</option>
                    <option value="C">C</option>                
                </select>
          </div>
    </div>
    <div id="someOtherDIVs> </div>
    <div id="someOtherDIVs> </div>
  </body>

现在,如果我首先尝试选择内容部分,然后按类或id过滤,我可以将事件处理程序附加到select元素,但如果我尝试直接查询元素,则永远不会附加事件处理程序。 / p>

例如,这有效:

$('#contentSection').change('.plotSelector', function(e)

但这些不是:

$('#first').change(function(e) ... 
$('.selector').change(function(e) ...

有人可以解释原因吗?有没有办法从根中选择任何元素的根?

使用jquery 2.1.1

2 个答案:

答案 0 :(得分:0)

是的,选择器跨DOM工作(http://api.jquery.com/category/selectors/

评论中提供的小提琴有效,您是否检查过控制台是否有错误,可能是javascript没有完全运行。

答案 1 :(得分:0)

  

有没有办法从根中选择任何地方的任何元素   DOM?

只要从- (void)program:(SCNProgram *)program handleError:(NSError *)error { NSLog(@"SCNProgram error %@", error); } 开始,标准的javascript方法 all 就会从根目录中选择:

  • document.
  • document.getElementById('');
  • document.getElementsByClassName('');
  • document.getElementsByTagName('');
  • document.querySelector('');