在追加到屏幕上之前编辑返回的结果

时间:2010-10-08 08:38:09

标签: javascript jquery

我有以下脚本,我需要以某种方式结合在一起。每个功能目前都是单独工作的。

// Check if file exists clientside
function FileExists(path) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");

    FileExist = fso.FileExists(path);

    if (FileExist == true){
        return true
    } else {
        return false
    }
}

// Get links from database
function getSearchResults() {
    var search; 
    search = $(".txtHeaderSearch").val(); 

    $.ajax({
        url: 'results.aspx',
        type: 'POST',
        data: { strPhrase:search },
        success: function(results) { 
            // Need to somehow stop the .exe links from appearing on screen if FileExists == false
            $("#divSearchResults").empty().append(results); 
        }
    });
}

// The returned data looks something like this
<div><a href="link1.xls">link 1</a></div> 
<div><a href="link2.exe">link 2</a></div> 
<div><a href="link3.doc">link 3</a></div> 
<div><a href="link4.aspx">link 4</a></div> 

是否有可能以某种方式将FileExists函数与ajax成功函数集成,以防止.exe链接出现在客户端屏幕上,如果客户端计算机上不存在有问题的exe文件?

编辑1:以下是给我一个对象不支持此属性或方法错误:

    success: function(results) 
    { 
        results.find('a[href$=".exe"]').each(function(){ 
            if (FileExists(this.href)) {
               $(this).parent().remove(); 
            } 
        }); 

        $("#divSearchResults").empty().append(results); 
    }

编辑2:不再提供错误,但也不删除不存在的exe文件。

    success: function(results) 
    { 
        $(results).find('a[href$=".exe"]').each(function(){ 
            if (FileExists(this.href)) {
               $(this).parent().remove(); 
            } 
        }); 

        $("#divSearchResults").empty().append(results); 
    }

编辑3:这也不起作用。

    success: function(results) 
    { 
        var $results = $(results);

        $results.find('a[href$=".exe"]').each(function(){
            if (! FileExists(this.href)) {
               $(this).parent().remove(); 
            } 
        }); 

        $("#divSearchResults").empty().append($results);
    }

2 个答案:

答案 0 :(得分:0)

你可以这样做,attribute ends with selector

$(results).find('a[href$=".exe"]').parent().remove();

根据我的经验,有时候这条线不起作用。如果它也发生在您身上,请执行此操作,

var results = $('<div>').html(results).find('a[href$=".exe"]').parent().remove();
results = results.html();

那么你的结果现在就有了这个,

<div><a href="link1.xls">link 1</a></div> 
<div><a href="link3.doc">link 3</a></div> 
<div><a href="link4.aspx">link 4</a></div>

更新了以下评论。

$(results).find('a[href$=".exe"]').each(function(){
    if (! FileExists(this.href)) { // uses href as the path...
       $(this).parent().remove();
    }
});

答案 1 :(得分:0)

答案是在每一行中加入一个跨度。出于某种原因,这有效......