0

Razor 语法相当新,但我在 Razor 视图上有一些 jQuery 代码,如下所示:-

@section Scripts {

<script type="text/javascript">

    $(document).ready(function () {

        console.log('test1');

        var test = $('#4-10-documentation');

        console.log(test);

        $('#4-10-documentation').each(function () {

            console.log('test2');

        });

        console.log('test3');

    });

</script>

}

firebug 控制台输出:

test1

Object[]

test3

因此,当直接指定时,jQuery 可以轻松找到第一个对象,但由于某种原因,该.each函数根本不会触发。有什么原因吗?

别担心,这里的代码是真实代码的简化版本,我使用的是类选择器,而不是这里显示的 id 选择器。

注意:- 原来元素来自通过 ajax 加载的局部视图,因此 document.ready() 中不存在元素 ID

谢谢大家帮助我。

4

1 回答 1

1

当您尝试匹配选择器时,jQuery 将始终返回一个对象——无论是否找到与您的选择器匹配的 DOM 元素。这就是为什么您Object[]在 console.log 时看到输出的原因。

如果您使用的是 Firebug,我会检查您的 HTML 以查看您尝试使用 jQuery 循环的 DOM 元素是否实际上在呈现的 HTML 中。您还可以使用以下方法轻松检查 jQuery 是否找到与您的选择器匹配的任何 DOM 元素$("#4-10-documentation").length()

如果length()方法的结果是 0,那么这就是你的.each()回调没有被调用的原因。

于 2013-09-13T10:53:56.600 回答