繁体   English   中英

编辑返回的结果,然后追加到屏幕上

[英]Edit returned results before appending on screen

我有以下脚本,需要以某种方式将它们组合在一起。 目前,每个功能都可以单独工作。

// 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);
    }

您可以这样做, 属性以选择器结尾

$(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();
    }
});

答案是在每行中都包含一个跨度。 出于某种原因...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM