【发布时间】:2010-12-13 09:29:21
【问题描述】:
我想解决动态加载内容中的重复对象。请看下面的源代码更容易理解。
带有 1 个动态加载内容的基本页面 HTML
<body> <div id="general-div"></div>> <div id="div1"></div> <div id="placeholder1"> Dynamic Content will be placed inside this. <div class="inner-div"></div> <div class="div1"></div> </div> </body>
对于本页标题中的脚本,很容易选择“general-div”对象,如下代码所示。
$('#general-div')
在 placeholder1 中选择“inner-div”对象非常容易。所以我可以使用下面的代码进行选择。
$('.inner-div')
上面的代码可以完美运行。但是,当同一文档中有多个重复对象(如以下 HTML)时,我无法使用上述代码。上面的代码将返回 2 个不是我想要的对象。
基本页面 HTML - 加载另一个动态加载内容后
<body> <div id="general-div"></div>> <div id="div1"></div> <div id="placeholder1"> Dynamic Content will be placed inside this. <div class="inner-div"></div> <div class="div1"></div> </div> <div id="placeholder2"> Dynamic Content will be placed inside this. <div class="inner-div"></div> <div class="div1"></div> </div> </body>
可能的解决方案 1
我必须在动态加载内容中为每个脚本创建指定的 jQuery 对象,如下代码。
// Deep copy for jQuery object.
var specfiedjQueryObj = $.extend(true, {}, jQuery);
// modify find function in jQuery object.
specfiedjQueryObj.fn.find = function(selector)
{
// by adding placeholder selector before eval result.
return new specfiedjQueryObj.fn.old_find('#placeholder1 ' + selector);
};
// So, I can select any object in dynamic loading content.
(function($)
{
// This result must be 1 object.
$('.div1');
})(temp);
尽管如此,这个解决方案应该很好用。但是我发现jQuery是一个非常复杂的对象。尝试使用时发现很多错误。
你有解决这个问题的想法吗?
PS.PlaceHolder Id 不是固定 Id。所以,不可能在选择器规则中修复它。此外,我不确切知道它在文档中的元素数量和位置(第一个、最后一个或中间)。因为动态加载内容会显示在很多页面上。
【问题讨论】:
-
您是否知道您需要选择的
inner-div的内容?它是独一无二的吗?根据此问题中的答案和 cmets 以及您的相关问题,要么 jQuery 不起作用,要么我们不了解您需要满足的业务规则和技术要求。 -
我认为你误解了 jQuery。例如,您看过 :first 吗?
标签: asp.net jquery asp.net-mvc ajax asp.net-ajax