Javascript 如何创建返回jQuery方法attr值的函数

Javascript 如何创建返回jQuery方法attr值的函数,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有html结构: <div> <ul> <li><img src="img/product1.png" alt="product1"></li> <li><img src="img/product2.png" alt="product2"></li> <li><img src="img/product3.png" alt="p

我有html结构:

<div>
    <ul>
        <li><img src="img/product1.png" alt="product1"></li>
        <li><img src="img/product2.png" alt="product2"></li>
        <li><img src="img/product3.png" alt="product3"></li>
        <li><img src="img/product4.png" alt="product4"></li>
    </ul>
</div>

不幸的是,我在控制台中没有定义。

您的函数不会返回任何内容。它只是定义了一个onClick处理程序。这就是为什么返回值为“undefined”

如果您打算在单击某个div时记录该div的src,那么您的代码需要更像这样

$('div').on("click", "ul li img", function () 
{
    var sr = $(this).attr("src");
    console.log(sr);
});
在元素上注册事件侦听器的


但是,如果您希望将侦听器包装在一个函数中,然后调用该函数,正如您所做的那样,这也会起作用-在单击元素时,将触发打开(“单击”)中的函数。将设置sr的值,但外部函数本身不会返回值。您需要找到另一种方法来使用sr值执行某些操作,在函数中的on(“click”)

您的函数不返回任何内容。它只是定义了一个onClick处理程序。这就是为什么返回值为“undefined”

如果您打算在单击某个div时记录该div的src,那么您的代码需要更像这样

$('div').on("click", "ul li img", function () 
{
    var sr = $(this).attr("src");
    console.log(sr);
});
在元素上注册事件侦听器的


但是,如果您希望将侦听器包装在一个函数中,然后调用该函数,正如您所做的那样,这也会起作用-在单击元素时,将触发打开(“单击”)中的函数。将设置sr的值,但外部函数本身不会返回值。您需要找到另一种方法来处理sr的值,在函数的on(“click”)中,您必须在调用函数之前放置事件处理程序

var sr = "";
function imgSrc(obj){
    if(obj.tagName == "IMG")
        sr = $(obj).attr("src");
    else
        sr = $(obj).find("img").attr("src");
    return sr;
}
$('div').on("click", "li img", function () {
    console.log(imgSrc(this));
});

在调用函数之前,必须放置事件处理程序

var sr = "";
function imgSrc(obj){
    if(obj.tagName == "IMG")
        sr = $(obj).attr("src");
    else
        sr = $(obj).find("img").attr("src");
    return sr;
}
$('div').on("click", "li img", function () {
    console.log(imgSrc(this));
});

如果我理解正确,您希望sr具有属性值吗

var sr = "";
$('div').on("click", "ul li img", function () {
    sr = $(this).attr("src");
});

console.log(sr);

如果我理解正确,您希望sr具有属性值吗

var sr = "";
$('div').on("click", "ul li img", function () {
    sr = $(this).attr("src");
});

console.log(sr);

您需要单击元素以获取其属性。这就是代码的含义。您需要单击元素以获取其属性。这就是你的代码的意思。非常感谢你的帮助!非常感谢你的帮助!非常感谢您的建议,但我确实需要这个解决方案,不仅是用于日志,我还希望使用函数帮助分离代码,因为我认为在这种情况下使用单独的方法会更漂亮。非常感谢您的建议,但我真的需要这个解决方案,不仅是用于日志,我还希望使用函数帮助分离代码,因为我认为在这种情况下,当我有单独的方法时,它会更漂亮。