为什么jQuery不能识别我页面上的元素?

Dav*_*Dev 1 html asp.net-mvc jquery

我遇到问题,jQuery没有识别我页面上的元素,并抛出一个错误,说我试图选择的元素是null.

我们将内容插入到以下包装器中,该包装器由客户端提供:

http://www.ft.com/global/mm0802/ag/wrapper

包装器包含以下字符串:

<!-- ftplchol id="contentFixed" version="1.0" -->

我们用我们的内容替换然后呈现页面.

这是我们内容的一个示例:(我遇到的问题在下面描述)

<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function () {

        $('.ActionControl a').live("click", function () {
            $.get($(this).attr("href"), {}, function (result) {
                // do stuff with result
                });
            }, "html");

            return false;
        });
    });
</script>

<div class="ActionControl">
    <span>Fund Directory</span>

    <span>
        <a href="/funddirectory/DirectoryResult">A</a>
    </span>

    <span>
        <a href="/funddirectory/DirectoryResult/B">B</a>
    </span>

    <span>
        <a href="/funddirectory/DirectoryResult/C">C</a>
    </span>    
</div>
Run Code Online (Sandbox Code Playgroud)

当我在包装器的上下文之外运行我的东西时,一切都很好.我的代码表现如预期.但是当我运行整个页面并将内容插入到包装器中时,以下行会引发错误:

$('.ActionControl a').live("click", function () {

说这$('.ActionControl a')是空的.特别:Microsoft JScript runtime error: 'null' is null or not an object

但它没有任何意义.$('.ActionControl a') 不能和不应该,因为当时的文件已准备就绪,为null <div class="ActionControl">肯定存在的网页上,当我不使用包装它的工作原理.我可以通过FireBug和IE Dev工具栏看到它.

即使我试图获得类似$('a')或$('div')(页面上有很多)的东西,它仍然会抛出同样的错误.我知道jQuery正在工作,因为该$(document).ready()函数有效..

有谁知道为什么这不起作用?包装器中是否有某些东西会阻止它看到我的控件或任何其他控件?

sun*_*tos 6

当jQuery选择器不匹配任何元素时,它返回一个空数组,而不是null.这意味着没有加载jQuery.您的路径"/Scripts/jquery-1.4.1.js"可能在其"包装器"页面的上下文中无效.也许使用google托管的jQuery版本,它可以在所有上下文中使用:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

更新:我刚想到你可能与jQuery和另一个使用'$'符号的javascript库发生冲突.尝试使用jQuery的"noConflict"模式(http://api.jquery.com/jQuery.noConflict/),看看它是否在该上下文中有效:

$.noConflict();
jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
});
Run Code Online (Sandbox Code Playgroud)