2012-07-24 57 views
0

我有以下的html代碼。在我的頁面中有許多標籤,其中有class ='posta',但是我想分配的onclick事件只有post屬性。不能分配點擊事件

<ul class="posts_li"> 
     <li> 
      <a href="#" class="posta" post="status">Post</a> 
     </li> 
     <li> 
      <a href="#" class="posta" post="act">Act</a> 
     </li> 
     <li> 
      <a href="#" class="posta" post="event">Event</a> 
     </li> 
     <li> 
      <a href="#" class="posta" post="news">Create News</a> 
     </li> 
    </ul> 

我的jQuery代碼用於把一個事件是在這裏

$(".posta").click(function(){ 
      alert("here"); 
      if($(this).attr("post")){ 
       alert($(this).attr("post")); 
      } 
     }); 

回答

0

使用可以使用屬性選擇[propertyname]只選擇有屬性節點。

$(".posta[post]").click(function(){ ... }); 
+0

這項工作在所有瀏覽器? – 2012-07-24 18:10:05

+0

@ user1511547 yes .... – Neal 2012-07-24 18:11:45

+0

@ user1511547在CSS選擇器中使用此語法不適用於所有瀏覽器,但jQuery使用它自己的選擇器引擎http://www.myinkblog.com/sizzle-a-look-at -jquerys-new-css-selector-engine/thats以純JavaScript爲舊版瀏覽器實現,確保支持此功能。 – 2012-07-24 20:04:44

1

然後在選擇使用[attribute=value]

Example

$('.posts_li').on('click', '.posta[post]', function() { 
    alert($(this).attr("post")); 
    return false; 
});​ 

此外,你能避免受他們委託給父母將每個項目的事件處理程序。在這個例子中,我使用.on()方法(jQuery 1.7+)爲所有子元素在<ul>上放置了一個處理程序。對於較老的jQuery(1.4.2+),也可以使用.delegate()

+1

考慮提及jQuery版本,因爲'.on()'不可用於所有:) – Zuul 2012-07-24 18:12:07

+0

@Zuul每個人都應該使用最新的反正。爲什麼堅持使用舊版本? – Joseph 2012-07-24 18:17:33

+0

我有很多項目正在生產中,專門爲在開發時存在的jQuery版本而設計。特定的代碼經常用於規避已知錯誤或「添加」當前已有的缺失功能。但是,如果我要替換它們,我的頭痛將會急劇增加,並且我無法發表評論**)** *(這只是爲什麼開發人員仍然可能會使用舊版本的一個原因)* – Zuul 2012-07-24 18:23:21

0

您可以用CSS/jQuery的屬性選擇這樣做:

$(".posta[post]").click(......... your code here) 

這裏的例子: http://jsfiddle.net/wHvkF/

0

我會用完成它:

請參見本working Fiddle例子。 從列表中最後一個沒有提醒

$(".posta[post]").click(function(e) { 
    e.preventDefault(); 
    alert("here"); 
}); 

作品,因爲jQuery的1.0版本。