Jquery hasClass +如果语句

发布于 2024-11-07 19:06:14 字数 366 浏览 2 评论 0原文

我希望以下 loadContent 函数仅在单击的链接具有特定类时加载目标 div。这是我到目前为止所想到的:

function loadContent(targetDIV, sourceURL) {
if ( $(this).hasClass("done") ) {
$(""+targetDIV+"").load(""+sourceURL+"");
}
}

<a href="javascript:loadContent('#nav', 'news.php');" class="done">News</a>

该函数无需 if 语句即可工作,但我似乎无法让 hasClass 与 if 一起工作 - 有什么想法吗?谢谢!

I want the following loadContent function to load the target div only if the link clicked has a certain class. This is what I've come up with so far:

function loadContent(targetDIV, sourceURL) {
if ( $(this).hasClass("done") ) {
$(""+targetDIV+"").load(""+sourceURL+"");
}
}

<a href="javascript:loadContent('#nav', 'news.php');" class="done">News</a>

The function works without the if statement, but I just can't seem to get the hasClass to work with the if - any thoughts? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笨死的猪 2024-11-14 19:06:14

它不起作用的原因是函数中对“this”的引用实际上并不是指该链接。将链接本身传递给函数以获得更好的结果:

function loadContent(linkObj, targetDIV, sourceURL) {
    if ( $(linkObj).hasClass("done") ) {
        $(""+targetDIV+"").load(""+sourceURL+"");
    }
}

<a href="javascript:loadContent(this, '#nav', 'news.php');" class="done">News</a>

The reason it does not work because the reference to "this" in your function is not actually referring to the link. Pass the link itself to the function for better results:

function loadContent(linkObj, targetDIV, sourceURL) {
    if ( $(linkObj).hasClass("done") ) {
        $(""+targetDIV+"").load(""+sourceURL+"");
    }
}

<a href="javascript:loadContent(this, '#nav', 'news.php');" class="done">News</a>
白云不回头 2024-11-14 19:06:14

将其更改为以下内容,它应该可以工作:

<a href="#" onclick="loadContent.call(this, '#nav', 'news.php');" class="done">News</a>

通过使用 .call(),您可以在 loadContent 中设置 this 的值函数到当前元素。

因为我们使用了 onclick,内联处理程序中的 this 将为您提供要传递的引用。

Change it to the following, and it should work:

<a href="#" onclick="loadContent.call(this, '#nav', 'news.php');" class="done">News</a>

By using .call(), you're setting the value of this in the loadContent function to the current element.

And because we used onclick, this in the inline handler will give you that reference to pass on.

篱下浅笙歌 2024-11-14 19:06:14

您可以使用 jquery click() 方法来绑定您的点击,而不是使用 href="javascript:..." 吗?

我不确定“this”是否设置正确,但我认为使用 jquery click 将确保“this”是您所期望的。我也觉得这样更清楚了。

Instead of using href="javascript:..." could you perhaps use the jquery click() method to bind your click?

I'm not sure if "this" is set correctly as you've got it but I think using jquery click will ensure "this" is what you're expecting. I also think it's more clear.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文