javascript - 在附加到屏幕之前编辑返回的结果

标签 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> 

如果客户端计算机上不存在相关 exe 文件,是否可以将 FileExists 函数与 ajax 成功函数集成,以防止 .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);
    }

最佳答案

你可以这样做,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();
    }
});

关于javascript - 在附加到屏幕之前编辑返回的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888924/

相关文章:

javascript - React 组件中的两个提供者

javascript - 带有实例变量的简单 JavaScript 继承

javascript - 在 jquery 中通过 $.ajax 提交表单后获取成功信息

javascript - 使用 Typescript 在 Angular2 中导出对象文字

javascript - 不显示计算结果

javascript - 如何为用 typescript 编写的模块编写插件加载器

javascript - 如何进行 jQuery 验证以仅允许表单中包含英文和日文字符

javascript - 如何从导出为模块的请求中获取回调函数的返回值

jquery - 是否可以运行两个 javascript 库,MooTools 用于 Selectervizr,jQuery 用于其他所有库?

php - 防止条纹表单提交