jquery split()和indexOf导致“Object不支持此属性或方法”
我有以下代码:
var selected = $('#hiddenField').val().split(","); ... if (selected.indexOf(id) > 0) { ... set value ... }
我正在动态创建一个CheckBoxList,并试图通过将所选ID放入隐藏字段来记住复选框的状态。
我收到一条错误,指出“对象不支持此属性或方法”。 我的假设是selected是一个数组,它应该支持indexOf。 这是不正确的?
有一个jQuery方法来克服缺少indexOf()
,你可以使用.inArray()
代替:
var selected = $('#hiddenField').val().split(","); if ($.inArray(id, selected) > -1) { ... set value ... }
jQuery.inArray()
就是出于这个原因……如果你已经包含了jQuery,则不需要再次编写该函数。 注意:这实际上返回一个数字,如indexOf()
会。
根据您的错误消息,我假设这是来自Internet Explorer。
惊喜! Internet Explorer(包括版本8)不支持数组的indexOf。
以下是Firefox可以使用的实现 :
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; }
[].indexOf || (Array.prototype.indexOf = function(v,n){ n = (n==null)?0:n; var m = this.length; for(var i = n; i < m; i++) if(this[i] == v) return i; return -1; });
- 是否有一个与jQuery相同的Request.IsMvcAjaxRequest()?
- 无法使用ajax调用函数
- 将可空的十进制数从json传递到ASP.NET MVC Controller Action?
- MVC中的字段validation
- 如何使用ASP.NET MVC中的jQuery ajax方法将数据列表发送到Controller Action方法?
- asp.net mvc中JavaScriptResult的工作示例
- 在MVC3中使用JqueryvalidationDropDown
- 通过AJAX请求DNN MVC执行操作
- Jquery post和unobtrusive ajaxvalidation不工作mvc 4