1

我有一个部分视图,我试图将它加载到一个 cshtml 文件中两次。

现在在我的部分视图中,我也有一个 javascript 函数。此时,当我将我的 cshtml 加载到页面上时,我将拥有两个同名的 Javascript 函数。

我想避免这种情况,并根据我将部分视图绑定到的模型来唯一地命名 Javascript 函数。

请不要我可以通过将它与“@Model.Id”之类的参数相关联来实现我的局部控件中每个控件的唯一性。但是我无法对 Javascript 函数的唯一性应用同样的东西。

我很抱歉我的英语不好。如果您需要更多详细信息,请告诉我。

4

2 回答 2

1

您可以拥有一个对每个控件进行操作的 JavaScript 函数,而不是为每个部分设置许多具有不同名称的函数。因此,例如,您可以为这些控件分配一个类,然后以jQuery plugin附加到具有该类名的所有控件的形式编写您的函数。

现在可以在单独的 javascript 文件中声明该函数,而无需在部分中混合标记和 javascript,这是一个糟糕的设计。然后可以使用标准 jQuery 语法简单地将插件附加到该类的所有控件:

$(function() {
    $('.someClass').myFunction();
});

您还可以使用 DOM 元素上的 HTML5 data-* 属性将一些元数据与它们相关联,例如来自您的模型的唯一标识符。然后可以在您的 jQuery 插件中访问此元数据。

例如:

<div class="someClass" data-id="@Model.Id">
    This is some div with associated metadata
</div>
于 2013-02-03T09:48:20.373 回答
0

为了实现这样的场景,您可以使用data-attribute.

例如,我们有相同的 html 代码被一个 div 包围,这些 div 有不同的 id。

每个 div 将有一个data-attribute和使用 jquery 你可以捕捉一个事件(如点击)

现在代码示例

HTML

<div id="id1" data-attribute="doSomething">Element</div>
<div id="id2" data-attribute="doSomething">Element</div>

在您的情况下,这些 div 表示来自部分视图的结果,您也可以将id属性中的值存储更改为来自您的模型,例如id="id@{Model.Id}"

jQuery

$("div[data-attribute=doSomething]").click(function() {
    alert("Clicked element: " + $(this).prop("id")); 
});

菲德尔示例

我正在使用Jquery 的属性选择器来实现它

请注意,您也可以通过定义类属性来实现它。但我认为你应该在你真正需要一个类时使用它,否则使用自定义属性,如data-value="something"

于 2013-02-03T09:56:12.357 回答