jQuery next() - 选择器

Posted

技术标签:

【中文标题】jQuery next() - 选择器【英文标题】:jQuery next() - selector 【发布时间】:2011-03-02 17:03:44 【问题描述】:

我在它们下面有几组 javascript 代码和 div:

     <script type='text/javascript'>
                    jQuery(document).ready(function()
                        jQuery(".display").something(
                        /*myfunction*/
                        );
                    );
                </script>

        <div class="display"></div>  

     <script type='text/javascript'>
                    jQuery(document).ready(function()
                        jQuery(".display").something(
                        /*myfunction*/
                        );
                    );
                </script>

        <div class="display"></div>      

(...)

有没有办法在精确的 JS 之后只选择 .display div?我一直在考虑 next() 但很难附加到 document.ready ;)

【问题讨论】:

仅供参考,在这种情况下,“代码”是不可数名词。因此“代码”是不正确的。 【参考方案1】:

您应该给每个&lt;div&gt; 一个id 并以这种方式附加处理程序。

Javascript 并不真正关心您在 html 中的哪个位置编写它。将所有的 Javascript 放在一个脚本文件中,并通过 className/id 引用 DOM 元素。

【讨论】:

不行,每个div和脚本都是动态生成的。 @anonymous:当然可以。生成 &lt;div&gt;s 时为其生成 ID 或类,并使用一个脚本来处理它们。【参考方案2】:

只需给每个 DIV 一个唯一的 id,然后在您的选择器中使用该 id。

【讨论】:

不行,每个div和脚本都是动态生成的。 那么为什么动态生成不能为 Javascript+HTML 的每个部分使用不同的 id 呢?【参考方案3】:

你可以给脚本标签一个唯一的 id 并调用 next():

<script id="script-tag-1">
jQuery(function() 
  var node = $('#script-tag-1').next('.display');
);
</script>
<div><!-- content --></div>

jsFiddle:http://jsfiddle.net/SYgEX/

【讨论】:

你应该把ID放在&lt;div&gt;标签而不是&lt;script&gt;标签上。 为什么是should?也许他想在不与现有 html 混淆的情况下添加 javascript 逻辑,或者有一个非常模块化的系统,其中脚本“添加”了功能但不是必须运行的。 因为将 id 放在脚本对象上是完全奇怪的,而且从来没有人这样做过。它彻底打破了形式和功能的分离。 这就是函数的用途。【参考方案4】:

一切都是动态生成的(这就是为什么我问如何在不接触 DOM 的情况下更改我的 JS 代码!)。

反正我已经找到了最好的方法。

<?php $id = rand(); ?>

 <script type='text/javascript'>
                    jQuery(document).ready(function()
                        jQuery(".display-"<?php echo $id;?>").something(
                        /*myfunction*/
                        );
                    );
                </script>

        <div class="display-<?php echo $id;?>"></div>  

不完美,但至少可以正常工作(并且可能会损坏,但几率非常低)。

【讨论】:

你不能计算一下你生成的部分的数量并使用它吗?我建议使用 id 而不是类,因为它是唯一值。 正如我们中的一些人所说,动态生成 HTML 绝不意味着您不能接触 DOM。实际上,您已经按照代码生成的定义这样做了。而且,事实上,您的解决方案几乎就是我们其他人建议您做的事情。很抱歉,我们不够清楚,您无法理解我们。

以上是关于jQuery next() - 选择器的主要内容,如果未能解决你的问题,请参考以下文章

jQuery next() - 选择器

jquery 选择器

Jquery 常用选择器总结

jQuery高级选择器

jquery选择器中的加号(+)是什么

jQuery之层次选择器