我有以下脚本,我需要以某种方式将其组合在一起。目前每个功能都是单独工作的。
// 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/