我在我的项目中使用WebGrid
。当我在浏览器中检查我的代码(aspx
页面)时,我在控制台上发现了错误。它是:TypeError: $(...).parent(...).delegate is not a function
当我点击错误行时它会显示以下代码:
$(function() {
$('table[data-swhgajax="true"],span[data-swhgajax="true"]').each(function() {
var self = $(this);
var containerId = '#' + self.data('swhgcontainer');
var callback = getFunction(self.data('swhgcallback'));
/*here comes the error*/
$(containerId).parent().delegate(containerId + ' a[data-swhglnk="true"]', 'click', function() {
$(containerId).swhgLoad($(this).attr('href'), containerId, callback);
return false;
});
})
});
主ASPX页面代码:
<%using (Html.BeginForm("Action", "Dashboard", FormMethod.Post)) { %>
<div id="MainDashboardDiv">
<div class="UpperLiveTiles">
<div id="RecentDiv">
<a href="../CRM/RecentCRMRequest">
<h4 class="RequestTitle">Recent Requests</h4>
</a>
<%Html.RenderAction("RecentRequests", Model); %>
</div><!--End of RecentDiv -->
<div id="PriorityDiv">
<a href="../CRM/HighPriorityCRMRequest">
<h4 class="RequestTitle">High Priority Requests</h4>
</a>
<%Html.RenderAction("PriorityRequests", Model); %>
</div><!--End of PriorityDiv -->
</div><!--End of UpperLiveTiles -->
</div><!--End of MainDashboardDiv -->
<%} %>
部分View1代码:
<%
var grid1var = new WebGrid(source: Model, defaultSort: "Id", fieldNamePrefix: "grid1", canSort: true, ajaxUpdateContainerId: "FirstDiv", canPage: true, rowsPerPage: 5);%>
<div id="FirstDiv">
<%=
grid1var.GetHtml(htmlAttributes: new { id = "grid1" }, tableStyle: "GridTable", headerStyle: "GridHeader",
columns: grid1var.Columns(
grid1var.Column(columnName: "Id", header: "ID", canSort: true),
grid1var.Column(columnName: "Requester_Name", header: "Employee", canSort: true),
grid1var.Column(columnName: "Estimated_Amount", header: "Amount", canSort: true),
grid1var.Column(columnName: "Date_Created", header: "Date", canSort: true, format: item => item.Date_Created.ToString("dd-MM-yyyy"))
))
%>
</div>
部分View2代码:
<%
var grid2var = new WebGrid(source: Model, defaultSort: "Id", fieldNamePrefix: "grid2", canSort: true, ajaxUpdateContainerId: "SecondDiv", canPage: true, rowsPerPage: 5);%>
<div id="SecondDiv">
<%=
grid2var.GetHtml(htmlAttributes: new { id = "grid2" }, tableStyle: "GridTable", headerStyle: "GridHeader",
columns: grid2var.Columns(
grid2var.Column(columnName: "Id", header: "ID", canSort: true),
grid2var.Column(columnName: "Requester_Name", header: "Employee", canSort: true),
grid2var.Column(columnName: "Estimated_Amount", header: "Amount", canSort: true),
grid2var.Column(columnName: "Date_Created", header: "Date", canSort: true, format: item => item.Date_Created.ToString("dd-MM-yyyy"))
))
%>
</div>
我不知道这是什么类型的错误。
我终于发现了错误:
这只是因为我在系统中使用的现成的jquery菜单正在使用旧的jquery。它与New Jquery版本相冲突。我删除了该菜单,一切正常。
答案 0 :(得分:2)
改为使用$(document)
:
$(document).delegate(containerId + ' a[data-swhglnk="true"]', 'click', function() {
$(containerId).swhgLoad($(this).attr('href'), containerId, callback);
return false;
});
or you can place the id or class of the parent.
.delegate()
至少需要jQuery 1.4.2版
.live()
至少需要jQuery 1.3版( deprecated: 1.7, removed: 1.9
)
.on()
需要jQuery版本1.7 +
因此,如果您使用jquery 1.9
,请使用.on()
。
答案 1 :(得分:0)
如果您的要求是动态绑定该元素的事件请参考$(document).delegate(“您的精确选择器”,“事件”,“要调用的函数”)。
正如我所见,你已经说过这段代码是在运行时生成的。您能否告诉我们您的aspx代码片段以及生成的代码?