2011-12-21 150 views
1

我有1塊:選擇器不正常工作

<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"); 
       }); 
      }); 
     } 

Click事件工作良好,沒有filmid atrribute。
你能解釋一下爲什麼以及如何做第一塊效果很好?

+0

請定義一個工作示例「效果很好」 ......第一塊會發生什麼?你使用的是什麼文檔類型? – fcalderan 2011-12-21 08:36:03

+1

http://jsfiddle.net – noob 2011-12-21 08:36:29

+0

我的意思是第二塊顯示messgage(測試),第一塊只重新加載頁面。 – user348173 2011-12-21 08:42:05

回答

4

因爲filmid並不存在於HTML屬性,你應該使用一個數據屬性:

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

你可以訪問此:

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

你需要添加一個第二類到沒有膠片用於選擇器的塊,因爲.click將被綁定到所有div。不管它們是否具有filmid屬性。

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/