尝试使用jQuery将对象转换为字符串

时间:2014-03-26 21:25:52

标签: javascript jquery string

我正在尝试在字符串中搜索标签,但我似乎无法让它正常工作。这是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] 

有关如何使其发挥作用的任何想法?

4 个答案:

答案 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)

第三行是问题发生的地方;你只需要从元素而不是元素本身获取文本:

http://jsfiddle.net/PK72y/1/

<强> 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