我只需要检查字符串是否是HTML标记。我在谷歌搜索并尝试下面的代码,但没有成功:
var v = $(string).html() ? 1 : 0;
--or----------------------------------------------
var htmlExpr = new RegExp("/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/");
var v = htmlExpr.test(string) ? 1 : 0;
--or----------------------------------------------
var v = $(string).each(function(){$(this).html();} ? 1 : 0;
====
实际上我想检查字符串是否是img标签,获取它的alt属性,如果不是(它是一个普通的非html字符串)得到它的全部。
请帮我解决这个问题...... 感谢
====
让我向您展示一个真实的例子,包括所有方面的细节......
这是主要功能:
content.find('a').each(function () {
var $this = $(this),
optText = ' ' + $this.text(),
...,
...,
...;
...
...
...
}
在这个函数中,我需要在第3行处理“$ this.text()”部分。
我们正在寻找的标签中的文本有时包含普通字符串,有时还包含img标记。当它是普通文本时,我想完全把它放在optText变量中;但是当它是一个img标签时,我只想把它的alt属性放在那个变量中。
如此简短:
$this.text() => NormalText
--or----------------------------------------------
$this.text() => <img src="#" alt="AltText" />
所以我改变了这个功能,并用第三行中的每个代码替换了“$ this.text()”代码:
($this.text().html() ? $('img', $this.text()).attr('alt') : $this.text())
--or----------------------------------------------
(htmlExpr.test($this.text()) ? $('img', $this.text()).attr('alt') : $this.text())
[which htmlExpr was defined before...]
--or----------------------------------------------
($this.text().each(function(){$(this).html();}) ? $('img', $this.text()).attr('alt') : $this.text())
但这些代码都不适合我...
现在,你能帮帮我吗?!
答案 0 :(得分:3)
这样的东西?:
var str = "<img alt='hello'>";
if(str.match(/\<img.+\>/)) {
str = $(str).attr('alt');
}
它接受字符串,检查它是否为img
元素,然后获取alt属性。更简单的方法是在if语句中检查alt
:
if($(str).attr('alt')) {
str = $(str).attr('alt');
}
if($(str).is('img') && $(str).attr('alt')) {
str = $(str).attr('alt');
}
答案 1 :(得分:0)
如果您只是想检查它是否是图片并且具有alt
属性,请尝试使用此正则表达式:
/(?=.*alt=".+")<img.*?\/?>/
快速测试:
var str1 = '<img src="http://dot.com/test.jpg" alt="test"/>';
var str2 = '<img src="http://dot.com/test.jpg" alt="" />';
var str3 = '<input/>';
console.log(img.test(str1)); //= true
console.log(img.test(str2)); //= false
console.log(img.test(str3)); //= false
答案 2 :(得分:0)
这有帮助吗?
var samples = ["<img src='#' alt='img1' />","hello","bye","<img src='#' alt='img2' />"];
for(var i = 0, len = samples.length; i < len; i++) {
if($(samples[i]).length > 0) {
alert($(samples[i]).attr('alt'));
}
}
答案 3 :(得分:0)
我自己发现了这个问题......这是一个合乎逻辑的错误...
关键是,当字符串是普通文本时,我们可以使用text()
,但是当它是HTML时我们应该使用html()
,否则text()
会返回null
...
我也从你们那里学到了一些东西......非常感谢你们......;)