无法将event.target转换为字符串

时间:2017-01-23 10:55:21

标签: jquery html

为了识别用户点击的元素,我尝试使用事件对象target

$(document).click(function (e) {    
    var str = e.target.toString();
    console.log(str);
    if (str.indexOf("some class or id") >= 0) {
        //do something
    };
});

然而,.toString()似乎对e.target没有任何影响。如果我这样做:

console.log(e.target);

我得到一个包含DOM元素开头的字符串,例如<div class="myclass">。这是检查子字符串是否存在所必需的,例如myclass&#34;或myid,使用indexOf

我的目的只是确定用户点击哪个div,方法是event.target查看&#34; myclass&#34;。

然而indexOf在这里不起作用,因为它会返回&#34; str不是函数&#34;。

但是,如果我尝试将其变成字符串,那么:

console.log(e.target.toString());

我得到[object HTMLDivElement]。没有我需要的HTML字符串的痕迹。

如何将event.target的输出转换为我可以操作的字符串?

请注意这种情况与event.target.id非常相似,关于@RunWith(PowerMockRunner.class) @PrepareForTest(DriverManager.class) public class TestMocker { @Test public void testName() throws Exception { //given PowerMockito.mockStatic(DriverManager.class); BDDMockito.given(DriverManager.getConnection(...)).willReturn(...); //when sut.execute(); //then PowerMockito.verifyStatic(); DriverManager.getConnection(...); } :但提议的解决方案对我不起作用。

2 个答案:

答案 0 :(得分:1)

在e.traget中,您拥有HTML DOM元素。所以,如果它有一个id,你应该可以做类似

的事情
var str = $(e.target).attr("id"); 
if(str.indexOf("id") > -1){ //do something}

答案 1 :(得分:1)

您不需要将其转换为字符串。摆脱.toString()

直接使用其ID属性。

if (e.target.id == 'myid'){
    //do something
};

但是,如果您想使用.is()

对选择器进行验证
  

针对选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。

if ($(e.target).is('.myclass')){
    //do something
};