2

所有,我是 jquery 的新手,我发现有时我需要编写一些代码来验证元素值。如下所示。

var selectedLayOutIdx=$("#spanSelectedLayout").html();
if (selectedLayOutIdx!=undefined && selectedLayOutIdx!="") {
    alert("The value is null, please check it.");
    return;
} else {
    //keep going.
} 

我发现这段代码看起来很冗长,我相信一定有更好的方法让代码在 jquery 中工作得更有趣。到目前为止,我还没有找到它。

请帮我 。谢谢。

4

4 回答 4

3

你可以使用jQuery.trim()

var selectedLayOutIdx=$.trim( $("#spanSelectedLayout").html() );
if( selectedLayOutIdx == "" ) {
  //its empty
}

或者

if( !$.trim($("#spanSelectedLayout").html()) ) {
     //its empty
}
于 2013-03-05T11:34:33.293 回答
1

您可以使用以下代码检查跨度的值。

var selectedLayOutIdx=$("#spanSelectedLayout").text();
if(selectedLayOutIdx == ""){
  alert("Value is null")
}else{
  // Your code
}

更新(较短的版本):

if($("#spanSelectedLayout").text()){
  // code if text present
}
于 2013-03-05T11:38:28.787 回答
1
var result=$("#spanSelectedLayout").html().replace(/^\s+|\s+$/g, '') 
if( result== "" ){

.
.
.

这对所有浏览器都有效。

.trim()在某些版本的 IE 中不起作用。

于 2013-03-05T11:42:23.807 回答
1

首先,您需要精确定义需求是什么。在您的代码中,您针对undefinedhtml 的 jQuerys 实现进行测试永远不会返回undefined,因此没有理由对此进行测试。但是,可能有也可能没有理由针对 null 进行测试

<div id="spanSelectedLayout">content</div>

var txt = $("#spanSelectedLayout").html() //txt will be "content"

<div id="spanSelectedLayout">    </div>

var txt = $("#spanSelectedLayout").html() //txt will be return "    "

<div id="spanSelectedLayout">    </div>

var txt = $.trim($("#spanSelectedLayout").html()) //txt will be return ""

<div id="spanSelectedLayout">    </div>

var txt = $("#spnSelectedLayout").html() //txt will be null

后者最有可能由于选择器拼写错误而发生,即一个错误,因此您可能应该区别对待它而不是 "" 或全空白字符串。但是 "" 和所有空白 HTML 在语义上是相同的,因此您可能应该将这些值视为相同,这可能会导致

var selectedLayOutIdx=$.trim($("#spanSelectedLayout").html()); if( selectedLayOutIdx == "" ) { //为空 }

但是$.trim(null)返回""而不是空,因此仍然会隐藏错误,因此您必须在更简洁的代码或类似的代码之间做出决定

var selectedLayOutIdx=$("#spanSelectedLayout").html();
if(selectedLayOutIdx == null) { throw "Invalid selector" }

if(  && $.trim(selectedLayOutIdx) == "" ) {
   //is empty
}
于 2013-03-05T12:47:27.837 回答