2009-09-03 107 views
1

我是新来的jQuery,和对不起,如果这个问题是问前(可以找到正是我一直在寻找)使用命名约定,如果标签包含文本

我想实现以下convetion应用类:如果我创建一个这样的名字“_lblError”一个错误标签:

<div> 
    <asp:label ID="_lblError" text="this is a error msg"/> 
</div> 

CLASSA或CLASSB将应用于它依赖于一个空字符串或没有标签的“文本”参数。

我也想将此代码放在将整个应用程序中使用的外部JS文件。

感谢您的帮助!

+0

这是什么标签的HTML输出? – 2009-09-03 13:50:06

+0

范围。而ID前缀类似于ctl00__mainArea__lblError – Larsi 2009-09-03 14:06:34

回答

1

首先,你可能需要给标签可用于选择CSS类控制:

<asp:Label Id="_lblError" Text="This is the error message" 
    CssClass="ThisIsWhatWeWillllWorkWith" /> 

这将可能输出像

<span id="ct100__lblError" class="ThisIsWhatWeWillWorkWith"> 
    This is the error message. 
</span> 

现在,您可以选择使用类如选择在jQuery的标签,并添加取决于.text()属性是否为空类或B类。

$(function() { 
    $('.ThisIsWhatWeWillWorkWith').each(function() { 
     if($(this).text() == '') { $(this).addClass('ClassA'); } 
     else { $(this).addClass('ClassB'); } 
    }); 
}); 

所有代码被设置为是,没有不经修改的工作保证。但你得到了如何解决这个问题的一般想法...

编辑:在回应您的评论,这里有一种方法来做到这一点,而无需添加一个css类到标签。而不是使用该错误消息的<asp:Label>标签,包装文字在您的网页上硬编码标签:

<span class="ThisIsWhatWeWillWorkWith"><asp:Literal ID="__ltlError" Text="This is the error message.</asp:Literal></span> 

另一个,或许更优雅的方式,将创建自己的自定义标签和使用相反。

public class ErrorLabel : System.Web.UI.WebControls.Label 
{ 
    public ErrorLabel() { 
     this.CssClass = "ThisIsWhatWeWillWorkWith"; 
    } 
} 

你然后把错误信息在网页上使用以下行:

<asp:ErrorLabel ID="__lblError" Text="This is the error message" /> 

同样,不知道上面的代码将工作是。但同样,你做什么的想法...

+0

是的,感谢您提供sln,但我的目标是在控制上使用简单的命名约定。 – Larsi 2009-09-03 14:11:31

+0

由于您没有完全控制客户端ID,因此无法使用ID上的命名约定来获得防弹选择器。请参阅编辑我的文章,了解在服务器上稍微冗长的版本,但功能齐全。 – 2009-09-03 14:21:28

+0

同意,并提供一个SLN到原来的问题,我会接受你的答案。也许我会发表关于如何在jQuery中使用约定的另一个问题。谢谢 – Larsi 2009-09-04 12:04:51

0

如果这个想法是提供比方说,有不同的字体和/或背景,如果有错误,就什么都不显示,如果有错误的标签没有文本,那么你可以进行控制文字,而不是一个标签。字面控制不创建无文本(MSDN doc

+0

的东西,谢谢,这将适用于这种情况,但我希望掌握如何使用命名约定来应用automagic样式。我在等着看我能否得到答案。我会更新标题以反映这一点。 – Larsi 2009-09-03 14:17:09