Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用角度过滤器删除DOM元素,但不使用jQuery_Javascript_Jquery_Html_Angularjs_Filter - Fatal编程技术网

Javascript 使用角度过滤器删除DOM元素,但不使用jQuery

Javascript 使用角度过滤器删除DOM元素,但不使用jQuery,javascript,jquery,html,angularjs,filter,Javascript,Jquery,Html,Angularjs,Filter,我刚刚开始学习角度,并且已经很好地掌握了它的基本知识。然而,由于我对JS的广博知识也相当有限,所以我的进展并不顺利 我正在创建一个从JSON文件引入数据的提要。我希望引入的一个项目是一个包含HTML的字符串: "description": " <p><a href=\"https://www.flickr.com/people/71256895@N00/\">tomylees<\/a> posted a photo:<\/p> <p>&

我刚刚开始学习角度,并且已经很好地掌握了它的基本知识。然而,由于我对JS的广博知识也相当有限,所以我的进展并不顺利

我正在创建一个从JSON文件引入数据的提要。我希望引入的一个项目是一个包含HTML的字符串:

"description": " <p><a href=\"https://www.flickr.com/people/71256895@N00/\">tomylees<\/a> posted a photo:<\/p> <p><a href=\"https://www.flickr.com/photos/71256895@N00/20384585533/\" title=\"American Sweet Potatos IMG_6026\"><img src=\"https://farm1.staticflickr.com/608/20384585533_4141b76f92_m.jpg\" width=\"240\" height=\"180\" alt=\"American Sweet Potatos IMG_6026\" /><\/a><\/p> <p>Going to the farm shop.<br /> Rose Farm Shop, Rose Farm Cottages, Haine Rd, Ramsgate CT12 5AG.<br /> Saturday, 29th August 2015, Ramsgate, Kent.<\/p>",
但是,我不想使用jQuery,因为对于这一小部分来说,它感觉有些过分了。我也知道我的过滤器不需要解析我的HTML,因为ngSanitize会在它进入过滤器之前处理好它(这就是为什么我在挣扎?)

主要问题:如何隔离和删除前两个
元素?显然,有条件的“没有可用的描述”将是一个额外的好处,但我会满足于仅仅去掉这两段

干杯


Jamie.

只需创建一个
字符串。替换
过滤器,例如:

angular.module('FlickrFeed')
.filter('replace', function () {
    return function(input, p1, p2) {
        return input.replace(new RegExp(p1, 'gi'), p2);
    };
});
然后将其与您对JavaScript的广泛了解结合使用:

<div ng-bind-html="myString | replace:'&lt;p *[^&lt;]+&lt;/p&gt;':''"></div>


这个过滤器更易于重用和使用。请注意,对于您的特定问题,您需要退出

在使用jquery时,它只是不同地包装函数

var a=angular.element(“”).append(angular.element(输入))
a、 查找('p:n子级(1),p:n子级(2)')。删除()
var输出=修剪(a.text());
返回输出| |“无可用描述”;

我会选择非常简单的CSS方法。只需使用此规则在两个段落中隐藏不必要的标题:

.container p:nth-child(-n+2) {
    display: none;
}

只要对列表容器使用合适的选择器即可。

这就是我一直在努力的方向,但是我似乎无法让上面的代码正常工作。每次,无论我在括号中选择哪个子级,它都只删除第二个
。我怀疑这是因为我瞄准的
不在JSON中,而是我绑定的
也在JSON中?我认为问题源于将字符串解析为HTML。在我的原始版本中,它是在过滤器本身中解析的。
parseHTML
的角度包装是什么?当我检查它时,输入不包含div,所以第一行这样做是为了以最有效的方式对奖品进行元化!这就是我一直在使用的东西,直到我能找到一个JS替代品来工作。。。
var a = angular.element("<div>").append(angular.element(input))
a.find('p:nth-child(1), p:nth-child(2)').remove()
var output = trim(a.text());
return output || 'No description available.';
.container p:nth-child(-n+2) {
    display: none;
}