在Jquery .filter()函数中更改变量值

时间:2013-08-24 07:04:17

标签: javascript jquery function global-variables

我有一个id为'myTable'的表。现在有一个文本框,我在其中写下项目名称,以查找它是否存在于myTable单元格中。为此,我编写了以下代码 -

var retval=0;   
var search = $("#searchitem").val().trim();
$("table#myTable tr td").filter(function() {
    if($(this).text() == search){retval=1;alert('Same item found');}
else{retval=0;}
});

问题在于,当它在表格单元格中找到相同的项目时,它会显示警告框。但我的变量retval的值永远不会改变。它始终显示0。我该如何解决?

4 个答案:

答案 0 :(得分:1)

我认为您要完成的任务可以通过使用:contains()选择器完成,如下所示:

var search = $("#searchitem").val().trim();
var retval = $("table#myTable tr td:contains('"+search+"'") ? 1 : 0;

我没有测试过,但我几乎可以肯定它有效。这是一种更清洁的方法,确实更具可读性。

jQuery:contains()docs: http://api.jquery.com/contains-selector/

答案 1 :(得分:0)

请尝试return false这样

var retval=0;   
var search = $("#searchitem").val().trim();
$("table#myTable tr td").filter(function() {
    if($(this).text() == search){
        retval=1;
        alert('Same item found');
        return false;
    }else{
        retval=0;
    }
});

答案 2 :(得分:0)

仅在找到时更改变量值,因为您在开头将变量分配给 0

var retval=0;   
var search = $("#searchitem").val().trim();
$("table#myTable tr td").filter(function() {
    if($(this).text() == search){
        retval=1;
        alert('Same item found');
    }
});

答案 3 :(得分:0)

试试此代码

var search = $("#searchitem").val().trim();
var filteredData = $("table#myTable tr td").filter(function(element, index) 
{
    return $(element).text() == search;
});

现在这段代码返回满足条件的TD元素数组。