Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$(';body';).click()是否可以捕获我所单击的没有类/id的嵌套元素?_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery$(';body';).click()是否可以捕获我所单击的没有类/id的嵌套元素?

Javascript jQuery$(';body';).click()是否可以捕获我所单击的没有类/id的嵌套元素?,javascript,jquery,html,Javascript,Jquery,Html,我希望标题有意义——如果可以改进,请随意编辑 我有一个click函数,它应该返回true或false,这取决于我是否单击了某个列表中的某个内容。列表标记具有id,但其中的单元没有。它们也没有匹配的类,也没有任何其他属性。它们是由服务器在运行时生成的,所以我无法知道会有多少(这也不重要) 我想知道的是,如何使用jQuery.click()函数验证用户是否单击了其中一个?我设想的逻辑是: if (clickedElement == "#someList li") return true:

我希望标题有意义——如果可以改进,请随意编辑

我有一个click函数,它应该返回
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