我正在尝试在字符串中搜索标签,但我似乎无法让它正常工作。这是js。目标是让控制台给我“这个工作”,这是没有发生的。
$(document).ready( function() {
$('div').on('mousedown', function(e) {
var target = e.target;
console.log(target);
if (target.indexOf("<b>") > 0) {
console.log("this works");
}
});
});
这是HTML:
<div>This text is normal <b>this text is bold</b></div>
当我在粗体标签内部点击时,我会在控制台中看到它:
<b>this text is bold</b>
Uncaught TypeError: Object #<HTMLElement> has no method 'indexOf'
所以我尝试通过将变量更改为:
将其转换为字符串var target = String(e.target);
当我这样做并点击粗体标签时,我得到了这个:
[object HTMLElement]
有关如何使其发挥作用的任何想法?
答案 0 :(得分:0)
您需要所述元素的HTML:
var html = $(e.target).html();
if (text.indexOf("<b>")) //do stuff
答案 1 :(得分:0)
你想搜索html:
if ($(this).html().indexOf("<b>") > -1)
虽然我可能采取更面向对象的方法:
if ($(this).find('b').length > 0) {
或者,如果您想查看b
是否被点击:
if ($(e.target).is('b')) {
答案 2 :(得分:0)
第三行是问题发生的地方;你只需要从元素而不是元素本身获取文本:
<强> HTML 强>
<div id="test">This text is normal <b>this text is bold</b></div>
<div id="output"></div>
<强> JS 强>
$('#test').on('mousedown', function(e) {
var txt = $(e.currentTarget).html();
if (txt.indexOf("<b>") > 0) {
$('#output').html("this works");
}
});
答案 3 :(得分:0)
您可以通过以下方式搜索标记: if($(this).find(&#34; b&#34;)。length&gt; 0) 详细代码如下:
$('#test').on('mousedown', function(e) {
if($(this).find("b").length > 0){
$('#output').html("this works");
}
});
工作版本显示为JS Fiddle