2013-03-05 6 views
2

Все, я новичок в jquery, я нашел иногда мне нужно написать код для проверки значения элемента. как показано ниже.Лучший способ проверить значение span

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

Я нашел этот код выглядит многословным, я считаю, что должен быть лучший способ, чтобы сделать код работы больше удовольствия в JQuery. Пока что я этого не нашел.

Пожалуйста, помогите мне. Благодарю.

ответ

1

Во-первых, вам нужно точно определить, что это за требования. В вашем коде вы тестируете undefined jQuerys реализация html никогда не возвращает undefined, поэтому нет никаких оснований для тестирования на это. Однако там может или не может быть причиной для проверки на нуль

<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()); если (selectedLayOutIdx == «») {// пусто }

Однако $.trim(null) возвращает "", а не нулевой, так что будет еще скрыть ошибку, и вы для этого придется выбирать между более выразительным кода или что-то вроде это

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

if( && $.trim(selectedLayOutIdx) == "") { 
    //is empty 
} 
+0

Лучший ответ! Я должен нести ответственность за рецензента о будущем. –

3

можно использовать jQuery.trim():

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

ИЛИ

if(!$.trim($("#spanSelectedLayout").html())) { 
    //its empty 
} 
+0

спасибо. Я думаю, что второй способ лучше. не так ли? –

+0

второй короче, вы можете использовать любой из двух. –

+1

@ Joe.wang «лучше» - дело вкуса. Лучше, если короткий хороший, но не обязательно, если понятность - это то, на что вы нацелились. '.html()' не возвращает логическое значение, поэтому, чтобы понять, что он делает, вам нужно будет знать значения фальшивости JS, и в этом случае они действительно делают второй vresion отличным от первого. Первый будет проверять только пустую строку, но '$ trim (.html())' будет возвращать значение null, если выбор пуст, но пустая строка, если выбор в непустом и не имеет html, поэтому последний скроет ошибку когда вы ошибаетесь в селекторе –

1

Вы можете использовать следующий код для проверки значения диапазона.

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

ОБНОВЛЕНО (сокращенный вариант):

if($("#spanSelectedLayout").text()){ 
    // code if text present 
} 
+0

Привет, друг, я хотел бы найти более короткий код. как ответ Суджира. просмотрите его .thanks. –

1
var result=$("#spanSelectedLayout").html().replace(/^\s+|\s+$/g, '') 
if(result== ""){ 

. 
. 
. 

который действителен для всех браузеров.

.trim() не работает в некоторых версиях IE.

+0

wow ... Я знаю, что это хороший ответ, но мне трудно понять регулярное выражение. –

+0

Нет проблем ...... :) Удачи. –

Смежные вопросы