2012-03-17 56 views
1

我已經通過向jQuery網站添加條件來修改此代碼。但無論結果如何,它總是會在第一個'如果'中出現。我怎樣才能讓自己的情況起作用?

<script> 
/* attach a submit handler to the form */ 
$("#searchForm").submit(function(event) { 

/* stop form from submitting normally */ 
event.preventDefault(); 

/* get some values from elements on the page: */ 
var $form = $(this), 
    term = $form.find('input[name="s"]').val(), 
    url = $form.attr('action'); 

/* Send the data using post and put the results in a div */ 

**//the condition doesn't work here. It always get into the first "if". Why?** 
$.post(url, { s: term }, 
    function(data) { 
     if (var content = $(data).find('#content')) { 
      console.log('One or more results were found'); 
     } else { 
      console.log('no result'); 
     } 
    } 
); 
}); 
</script> 
+0

我只想提一下,使用有效的html,所有的ID都應該是唯一的,所以你不必使用'$(data).find('#content')',你可以使用'$('#內容')' – nathanjosiah 2012-03-17 06:59:18

回答

0

使用$(data).find('#content').length

在你的情況,你是你,如果條件中分配給$(data).find('#content')var content$(data).find('#content')返回一個對象,始終爲true,因此它始終滿足if條件。

,如果你想查詢某元素是否存在內部的數據使用

if ($(data).find('#content').length > 0) { 
     // content exist 
} else { 
     // empty 
} 
1

,因爲你正在製造條件的分配。它總是返回true。但如果它是類似的東西

if(data!="") 

那麼這將是一個條件。

+0

這是不正確的。如果你這樣做(test = false),它會進入else子句。問題是find()返回一個對象。 – Steve 2012-03-17 06:47:19

+0

是的,你是對的。即使它是一個賦值,if也會查看賦值變量。抱歉。當我嘗試它時,if中的「var」首先導致錯誤。你是怎麼過去的? – 2012-03-17 06:58:49

0

而不是

var content = $(data).find('#content') 

嘗試

$(data).find('#content').length 

find()方法總是返回一個對象,因此它將永遠是真實的。如果你使用.size(),你會看到它是否包含任何東西。