jquery:绑定onclick

发布于 2024-09-17 10:46:39 字数 1480 浏览 5 评论 0原文

    $(document).ready(function() {    
    $('a#fav').bind('click', addFav(<?php echo $showUP["uID"]; ?>));
});

在我添加 () 之前

    $(document).ready(function() {    
    $('a#fav').bind('click', addFav);
});

,因为我希望用户配置文件的 id 在 addFav ajax 调用中使用。

所以我在页面底部有这个,现在即使我没有点击 a#fav 它也会运行它?但当我没有(id)

Heres addFav 时,它不会自行运行,以防万一:

function addFav(id){
    $.ajax({
      url: "misc/favAdd.php",
      data: { id: id},
      success: function(){
           $('a#fav')
                 .addClass('active')
                 .attr('title','[-] Remove as favorite')
                 .unbind('click')
                 .bind('click', removeFav(id))
           ;
                jGrowlTheme('wallPop', 'mono', '[+] Favorit', 'Du har nu lagt till denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}

function removeFav(id){
    $.ajax({
      url: "misc/favRemove.php",
      data: { id: id },
      success: function(){
            $('a#fav')
                 .removeClass('active')
                 .attr('title','[+] Add as favorite')
                 .unbind('click')
                 .bind('click', addFav(id))
            ;
                            jGrowlTheme('wallPop', 'mono', '[-] Favorit', 'Du har nu tagit bort denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}
    $(document).ready(function() {    
    $('a#fav').bind('click', addFav(<?php echo $showUP["uID"]; ?>));
});

was before

    $(document).ready(function() {    
    $('a#fav').bind('click', addFav);
});

I added (<?php echo $showUP["uID"]; ?>) because i want the user profile´s id to work with in the addFav ajax call.

So i have this at the bottom of my page and now even if i havnt clicked on the a#fav it runs it? But it doesnt run itself when i dont have the (id)

Heres addFav in case:

function addFav(id){
    $.ajax({
      url: "misc/favAdd.php",
      data: { id: id},
      success: function(){
           $('a#fav')
                 .addClass('active')
                 .attr('title','[-] Remove as favorite')
                 .unbind('click')
                 .bind('click', removeFav(id))
           ;
                jGrowlTheme('wallPop', 'mono', '[+] Favorit', 'Du har nu lagt till denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}

function removeFav(id){
    $.ajax({
      url: "misc/favRemove.php",
      data: { id: id },
      success: function(){
            $('a#fav')
                 .removeClass('active')
                 .attr('title','[+] Add as favorite')
                 .unbind('click')
                 .bind('click', addFav(id))
            ;
                            jGrowlTheme('wallPop', 'mono', '[-] Favorit', 'Du har nu tagit bort denna profil som favorit', 'images/addFavorit_hover2.png', 1000);
      }
    });
}

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

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

发布评论

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

评论(2

被翻牌 2024-09-24 10:47:13

您需要一个像这样的 onload 的匿名函数:

$(function() {    
  $('a#fav').click(function(
    addFav(<?php echo $showUP["uID"]; ?>)
  });
});

并且在 success 回调中使用这种样式:

$('#fav').click(function() {
  addFav(id);
});

因为 #fav 应该是一个唯一的 ID,所以它是一个更快的选择器。


或者,将其作为数据参数传递给 .bind(),像这样:

$('a#fav').bind('click', { id: id }, addFav);

并在您的函数中以这种方式访问​​它而不是作为参数,如下所示:

function addFav(e){
  var id = e.data.id;

You need an anoymous function like this onload:

$(function() {    
  $('a#fav').click(function(
    addFav(<?php echo $showUP["uID"]; ?>)
  });
});

And this style in your success callbacks:

$('#fav').click(function() {
  addFav(id);
});

since #fav should be a unique ID, it's a much faster selector.


Or, pass it as the data argument to .bind(), like this:

$('a#fav').bind('click', { id: id }, addFav);

And in your function access it that way instead of as a parameter, like this:

function addFav(e){
  var id = e.data.id;
江湖彼岸 2024-09-24 10:47:05

bind 函数的第二个参数是函数本身。当您将函数作为参数传递时,您必须仅提供函数名称,而不能提供左/右括号或参数。

在您的情况下,如果您想将参数传递给 addFav 函数,您可以通过将匿名函数传递给 bind 并在该函数体内来实现,像平常使用参数一样调用 addFav 。像这样:

$(document).ready(function() {    
    $('a#fav').bind('click', function() {
        addFav(<?php echo $showUP["uID"]; ?>);
    });
});

The second parameter to the bind function is a function itself. When you pass a function as a parameter, you must only supply the function name, not the opening/closing parenthesis or arguments.

In your case, if you'd like to pass parameters to the addFav function, you may do so by passing an anonymous function to bind, and within the body of that function, call addFav as you normally would with your parameters. Like this:

$(document).ready(function() {    
    $('a#fav').bind('click', function() {
        addFav(<?php echo $showUP["uID"]; ?>);
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文