2012-03-17 61 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(),你会看到它是否包含任何东西。