2012-04-10 20 views
0

我有下面的HTML代碼:jQuery不會改變頁面上的下一個表單嗎?

<ul id="contributorPhotos"> 
    <li> 
     <img src="viewIcon.png" class="View"> 
     <img src="editIcon.png" class="Edit"> 
     <img src="deleteIcon.png" class="Delete"> 
     <form> 
      [Form fields to manage first image here] 
     </form> 
    </li> 

    <li> 
     <img src="viewIcon.png" class="View"> 
     <img src="editIcon.png" class="Edit"> 
     <img src="deleteIcon.png" class="Delete"> 
     <form> 
      [Form fields to manage second image here] 
     </form> 
    </li> 
</ul> 

我的jQuery的控制這一點:

<script> 
    $(".Edit").click(function() { 
     $(this).find("form").css("background-color","#03C"); 
    }); 
</script> 

正如你所看到的,我想現在要做的是改變背景顏色當前編輯按鈕下面的表單,但我正在打牆。

有人可以解釋爲什麼這不起作用嗎?

+0

。find是通過後代來查看的,所以如果你將它綁定到一個兄弟元素,它不會「查找」該表單作爲該元素的後代。 – kinakuta 2012-04-10 17:18:26

回答

3

.find()只適用於您選擇的元素的後代,並且您正在尋找兄弟姐妹。

使用此:

$(".Edit").click(function() { 
    $(this).siblings("form").css("background-color","#03C"); 
});​ 

jsFiddle example

+0

這最有效的工作。 – 2012-04-10 17:24:55

1

你需要說$(本).parent()。找到( 「形式」)

0

ummmm我得說,一個表單標籤未在列表標籤​​允許...

編輯:

大衛拜爾斯,不要惹惱你,但你的HTML是錯誤的...圖像標籤不允許在列表標籤​​..既不是形式標籤..你應該添加一個背景圖像到你的'按鈕'用CSS ... html看起來像這樣:

<div class="contributorPhotos"> 
     <!-- give background image and with to ur list tags --> 
    <ul> 
     <li class="View">View</li> 
     <li class="Edit">Edit</li> 
     <li class="Delete">Delete</li> 
    </ul> 

    <form> 
     [Form fields to manage first image here] 
    </form> 
</div> 
+0

你不必投票,因爲這是真的...... – Nicholas 2012-04-10 17:18:09

1
<script> 
    $.document.ready(function() { 
     $(".Edit").click(function() { 
      $(this).find("form").css("background-color","#03C"); 
     }); 
    } 
</script> 

很可能您的點擊功能從未被綁定到點擊事件。

+0

對不起......意思是說,該網頁的其餘部分是完好的...有一個有效的文檔類型,這個代碼是在一個document.ready塊。我刪除了該帖子的代碼。 – 2012-04-10 17:21:20

+0

好的,那麼我會用j08691或拉里的回答 – 2012-04-10 17:23:15

0

使用,而不是:

$(".Edit").click(function() { 
    $(this).closest('li').find("form").css("background-color","#03C"); 
}); 

你面臨的問題是方式find()作品:它看起來在當前元素中(在這種情況下$('.Edit')元素,這是一個形象,爲元素(或多個)由find內選擇限定。作爲圖像不能包含任何其它元素,這可能從未工作。替代,上方,移動到父li元素,然後內搜索,對於form

元件

你也可以嘗試使用:

$(".Edit").click(function() { 
    $(this).siblings("form").css("background-color","#03C"); 
}); 

這將在$('.Edit')元素的兄弟元素中進行搜索。

參考文獻:

相關問題