Javascript jQuery$(';body';).click()是否可以捕获我所单击的没有类/id的嵌套元素?
我希望标题有意义——如果可以改进,请随意编辑 我有一个click函数,它应该返回Javascript jQuery$(';body';).click()是否可以捕获我所单击的没有类/id的嵌套元素?,javascript,jquery,html,Javascript,Jquery,Html,我希望标题有意义——如果可以改进,请随意编辑 我有一个click函数,它应该返回true或false,这取决于我是否单击了某个列表中的某个内容。列表标记具有id,但其中的单元没有。它们也没有匹配的类,也没有任何其他属性。它们是由服务器在运行时生成的,所以我无法知道会有多少(这也不重要) 我想知道的是,如何使用jQuery.click()函数验证用户是否单击了其中一个?我设想的逻辑是: if (clickedElement == "#someList li") return true:
true
或false
,这取决于我是否单击了某个列表中的某个内容。列表
标记具有id,但其中的
单元没有。它们也没有匹配的类,也没有任何其他属性。它们是由服务器在运行时生成的,所以我无法知道会有多少(这也不重要)
我想知道的是,如何使用jQuery.click()函数验证用户是否单击了其中一个?我设想的逻辑是:
if (clickedElement == "#someList li")
return true:
但我认为这是不可能的另外:“#someList li”
不是静态值。这是实际应用程序中的一个参数,可能类似于“#someDiv div”
。有没有更好的方法来实现这个逻辑?我附上了一份相关代码:
HTML:
<ul id="someList">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
$("body").click(function (event) {
var clickedId = event.target.id;
var clickedElement = "???";
//alert(clickedId);
if (clickedElement == "#someList li") //is it possible to make this true?
{
alert("match!!");
} else {
alert("no match");
}
});
因为您说的是生成了
li
元素,您不能修改它们,所以测试标记名
$(“正文”)。单击(函数(事件){
var clickedElement=event.target.tagName;
如果(单击元素==“LI”){
文件。写(“匹配!!”;
}否则{
文件。填写(“不匹配”);
}
});代码>
- 项目1
- 项目2
- 项目3
既然您说的是生成了li
元素,您不能修改它们,请测试标记名
$(“正文”)。单击(函数(事件){
var clickedElement=event.target.tagName;
如果(单击元素==“LI”){
文件。写(“匹配!!”;
}否则{
文件。填写(“不匹配”);
}
});代码>
- 项目1
- 项目2
- 项目3
问题在于使用正确的选择器#someList li
指#someList
HTML:
如果单击其他任何位置,则不会触发警报
这是一个使用正确选择器的问题#someList li
指#someList
HTML:
如果单击其他任何位置,则不会触发警报
您可以尝试这样的方法来重复所有项目
$("body").click(function (event) {
var clickedId = event.target.id;
var clickedElement = "???";
//alert(clickedId);
var list = document.getElementById("someList");
var items = list.getElementsByTagName("li");
for (var j = 0; j < items.length; ++j) {
if (list.getElementsByTagName("LI")[j].innerHTML == "item 1") {
alert("match!!");
} else {
alert("no match");
}
}
});
$(“正文”)。单击(函数(事件){
var clickedId=event.target.id;
变量clickedElement=“???”;
//警报(单击EDID);
var list=document.getElementById(“someList”);
var items=list.getElementsByTagName(“li”);
对于(变量j=0;j
您可以尝试这样的方法来重复所有项目
$("body").click(function (event) {
var clickedId = event.target.id;
var clickedElement = "???";
//alert(clickedId);
var list = document.getElementById("someList");
var items = list.getElementsByTagName("li");
for (var j = 0; j < items.length; ++j) {
if (list.getElementsByTagName("LI")[j].innerHTML == "item 1") {
alert("match!!");
} else {
alert("no match");
}
}
});
$(“正文”)。单击(函数(事件){
var clickedId=event.target.id;
变量clickedElement=“???”;
//警报(单击EDID);
var list=document.getElementById(“someList”);
var items=list.getElementsByTagName(“li”);
对于(变量j=0;j
您想使用jQuery的函数。请使用您的示例查看下面的代码:
$("body").click(function (event) {
var clickedId = event.target.id;
var clickedElement = $(event.target);
//alert(clickedId);
if (clickedElement.is("#someList li")) //is it possible to make this true?
{
alert("match!!");
} else {
alert("no match");
}
});
您想使用jQuery的函数。请使用您的示例查看下面的代码:
$("body").click(function (event) {
var clickedId = event.target.id;
var clickedElement = $(event.target);
//alert(clickedId);
if (clickedElement.is("#someList li")) //is it possible to make this true?
{
alert("match!!");
} else {
alert("no match");
}
});
如果您使用$('#someList li')。请单击()。。。您将拥有此=已单击的li,出于某种原因您不想这样做吗?不。。。这很复杂,但我不需要对
元素进行任何操作,我只需要知道它是否是clicked如果您使用$(“#someList li”)。click()。。。您将拥有此=已单击的li,出于某种原因您不想这样做吗?不。。。这很复杂,但我不需要对
元素进行任何操作,我只需要知道它是否被clickedCool,但是否有办法进一步缩小它的范围(确保它仅在它是someList
的子元素时触发)?页面上有多个列表,我不希望它们单击另一个列表时触发。我不能这样做,因为它可能不是一直都是“#someList li”
。其他时候,它可能是另一个列表的,或者可能是一个没有id的
的父级
的子级(例如,“#someDiv”
)。换句话说,#somelist li
是click handler函数cool中的一个参数,但是有没有办法进一步缩小它的范围(确保它仅在它是somelist
的子对象时触发)?页面上有多个列表,我不希望它们单击另一个列表时触发。我不能这样做,因为它可能不是一直都是“#someList li”
。其他时候,它可能是另一个列表的 ,或者可能是一个没有id的
的父级
的子级(例如,“#someDiv”
)。换句话说,#somelist li
是单击处理程序函数中的一个参数。event.target和$(event.target)之间是否有区别?event.target
是本机javascript DOM对象(相当于document.querySelector('#somelist li')
)。将其包装为$(event.target)
将提供jQuery版本(相当于$('#someList li')
),以便您可以在其上使用jQuery方法。SWEET!这正是我最初希望的!我不认为这种功能是可能的!泰!event.target和$(event.target)之间有区别吗?event.target
是nat