为了识别用户点击的元素,我尝试使用事件对象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(...);
}
:但提议的解决方案对我不起作用。
答案 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
};