我有以下脚本,我需要以某种方式结合在一起。每个功能目前都是单独工作的。
// 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);
}
答案 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)
答案是在每一行中加入一个跨度。出于某种原因,这有效......