选择器无法正常工作

时间:2011-12-21 08:32:36

标签: javascript jquery

我有一个街区:

<div class="going" filmid="2">
<a href="">I am going!</a>
<div>Going too: 20</div>
</div>

和5个街区:

<div class="going">
<a href="">I am going!</a>
<div>Going too: 20</div>
</div>

一个区块的差异具有filmid属性 我的js功能:

function setUpUpdateGoingCount() {
            $("div.going a").click(function (e) {
                e.preventDefault();
                var filmId = $(this).parent("div").attr("filmid");
                $.post("/Cinema/UpdateGoingCount", { id: filmId }, function () {
                    alert("test");
                });
            });
        }

点击事件可以很好地处理没有filmid atrribute的块 你能解释一下为什么以及怎么做第一块效果很好吗?

3 个答案:

答案 0 :(得分:4)

由于filmid不是HTML中存在的属性,因此您应该使用数据属性:

<div class="going" data-filmid="2">

您可以通过以下方式访问:

var filmId = $(this).parent("div").data("filmid");

答案 1 :(得分:2)

AJAX帖子以任一方式发送。设置filmid的div内的锚点(链接)与设置为filmid内容的参数id一起发送。不包含filmid的div与param一起发送。

<强> UDATE 如果你的意思是不工作,javascript没有显示警告消息,那可能是因为你在该调用上收到错误,并且你需要以这种方式指定错误函数:

function setUpUpdateGoingCount() {
    $("div.going a").click(function(e) {
        e.preventDefault();
        var filmId = $(this).parent("div").attr("filmid");
        $.post("/Cinema/UpdateGoingCount", {
            id: filmId
        }, function() {
            alert("test");
        }).error(function() {
            alert("error");
        });
    });
}

这是您的代码http://jsfiddle.net/hpgsL/1/

的一个有效示例

答案 2 :(得分:0)

你需要在块中添加第二个类,而不在你的选择器中使用filmid,因为.click将被绑定到所有div。来自是否具有filmid属性。