我无法适应UI JavaScript编码的正确练习。所以我正在寻找一种更聪明的方法来做事。我一直在使用jQuery与ASP.NET,我一直在做类似下面的事情,这似乎是不专业和愚蠢的。 JavaScript UI编程对我来说一直是个谜。我知道怎么做,但我从来不知道怎么做。
$(function(){
$('submit').click(function() {
//behaviors, setup styles, validations, blah...
});
});
问题:
目标:
问题:
作为一名C#开发人员,我的想法主要是OO,jQuery非常具有程序性。我理解匿名函数的概念,但总的来说,我的想法仍然是尝试创建一个抽象UI然后声明属性或方法的域模型。但我真的不确定这是否是JavaScript中的方式。或者我是太理想还是我太努力去做一些不应该像OO OO那样的东西?所以问题是:
谢谢。
更新: 我刚发现这个slide,这似乎是一个很好的起点。 这也是我刚发现的good example。和jQuery的创建者good tutorial。
答案 0 :(得分:2)
ClientId问题是一个众所周知的问题,很难解决。 ASP.NET 4.0引入了一个ClientIDMode,它可以让你对渲染的最终id有一些更精细的控制。 ASP.NET MVC肯定会让您的客户端脚本编写生活更轻松。如果这引起了很多的麻烦并且等待ASP.NET 4.0或者使用ASP.NET MVC是可行的选择,我会探索这些替代方案。
答案 1 :(得分:2)
我在代码重用,处理客户端ID等方面找到的最好的技术是在我的Javascript中引入一种更加面向对象的方法。
这有以下好处
我仍然在其中使用Jquery。
所以举一个例子,如果我有一个基于javascript的widgit我想利用我会创建一个名为widget的“对象”并将其保存在Widget.js文件中。小部件对象将具有实例变量,构造函数和公共,私有方法,就像任何其他OO语言一样,例如Widget.js看起来像
// constructor
function Widget(aFooId,bBarId)
{
// instance variables
var fooId = aFooId;
var barId = bBarId;
// some magic to expose public methods
this.Init = Init;
// public methods
function Init()
{
alert("called init");
}
//private methods
function PrivateMethod()
{
}
}
aspx页面上的调用看起来像
var widgetInstance = new Widget("<%=Foo.ClientId%>",<%=Bar.ClientId%>);
widgetInstance.Init();
答案 2 :(得分:1)
依赖jQuery没有任何问题,它已经成为客户端脚本的事实标准,而且比代码中有太多的抽象更好。所以使用jQuery插件是一种模块化的好方法。
您可以使用ASP.NET 4.0(如Kevin P建议)解决ClientId问题,或者使用'ends-with'选择器引用元素
$('input[id$=_ProductName]
匹配ID属性的结尾,因此匹配
<span id="ctl00_MyHeader_ProductPanelPlaceholder_ProductName">
即使包含控件的ID发生更改。
答案 3 :(得分:0)
我的东西LiveUI web框架正是你在找什么,请看看 http://www.codeproject.com/KB/custom-controls/jquery-datepicker-aspnet.aspx