-1

那么我的问题是这样的,让我们举个例子。一个页面有30个链接,每个链接下都有一个like按钮。当有人点击一个赞按钮时,链接会通过一个 ajax 发布请求到一个 php 文件而获得赞。

但是是否可以通过使用 jquery 或 javascript 编写一组代码来查找喜欢哪个链接(通过获取链接的 ID 或其他内容),然后通过 ajax 请求将其发送到 php,而不是编写 30 行每个被喜欢的链接的 ajax 发布请求。谢谢

4

3 回答 3

2

data-*您可以使用属性将每个链接与其按钮相关联。在您的按钮上,使用data-mylink="linkId"并为其提供链接的 ID。

然后,在您的 onclick 上,您可以执行以下操作:

$('.buttonClass').on('click', function(){
    var myLinkId = $(this).attr('data-mylink'); 
    //as David Barker suggested, you can also grab it with $(this).data('mylink')
    //whatever else you have to do.
});

或者,您也可以将它们都包装在一个 div 中并执行以下操作:

$('.buttonClass').on('click', function(){
    $(this).parent().find('a').text() or .val() or .attr('href');
});

编辑

正如 War10ck 所指出的,如果您的项目是动态创建的,您将需要委托:

$(document).on('click', '.buttonClass', function () { 
    // your code here 
});

这就是说:将此单击用于任何存在的class="buttonClass"按钮或稍后创建的任何按钮class="buttonClass"

于 2013-05-08T18:52:43.893 回答
0

这是我用来解决开发 Web 应用程序的问题。您可以使用data-*@Yatrix 所说的属性,也可以绑定.data()到您的按钮。我更喜欢第二种方式。我猜你是通过模板或动态渲染这些按钮,所以你可以使用.data('foo','bar')然后通过$(this).data('foo')$(this)指按钮)检索它,然后获取这些数据并通过 AJAX 发送。这些是解决此问题的相同方法,但唯一的区别是第二个对任何人都不可见。

于 2013-05-08T18:57:22.597 回答
0

我会在直接的javascript中这样做。不过我还没有测试过,所以它可能不是 100% 正确的。

HTML:

<a href="page-to-be-liked1.html">Link</a>
<div class="like-button" data-likeID="1">Button</div>

<a href="page-to-be-liked2.html">Link</a>
<div class="like-button" data-likeID="2">Button</div>

<a href="page-to-be-liked3.html">Link</a>
<div class="like-button" data-likeID="3">Button</div>

<a href="page-to-be-liked4.html">Link</a>
<div class="like-button" data-likeID="4">Button</div>

JavaScript:

var buttons = document.getElementsByClassName("like-button");
var post_to = '/location-of-php-script.php';

for(var i=0;i<buttons.length;i++){
    buttons[i].addEventListener('click', buttonClick);
}

function buttonClick(event){
    var request = new XMLHttpRequest();
    request.open("POST", post_to, true);
    request.send('likeID='+this.getAttribute('data-likeID'));
}
于 2013-05-08T19:09:15.447 回答