2011-03-05 119 views
4

我有一個很簡單的問題,吃了4個小時,還沒有解決:如何用jQuery找到具有特定類的下一個跨度? 我有以下的HTMLjQuery找到類的下一個元素

<tr> 
    <td align="right">Име:&nbsp;</td> 
    <td align="left"> 
     <input type="text" value="<?=$profileSQL['user_name']; ?>" name="user_name" class="input required" /> 
    </td> 
</tr> 
<tr> 
    <td align="right" colspan="2"> 
     <span class="error"></span> 
    </td> 
</tr> 

,我用jQuery驗證。 我想要的如果有一個錯誤消息,生成與js(只是一個字符串),jQuery找到最接近的跨度類.errortext()在那裏的消息。我嘗試了nextAll(),next("span.error")和很多其他的東西,但沒有任何幫助。

在此先感謝!

+0

嘗試顯示瀏覽器(查看源代碼)所看到的實際呈現的html,而不是我認爲的* php。 – 2011-03-05 13:55:42

+0

什麼是根節點? – jAndy 2011-03-05 13:58:49

+0

@DavidThomas:這個php只是一個字符串,但我試過你的方式,結果是一樣的 @jAndy:根節點我認爲你的意思是主容器?這是表,如果你問 – 2011-03-05 13:59:43

回答

1

我知道這可能不是你在尋找什麼,但如果你有輸入,像這樣:

var input = $('input[name="user_name"]'); 

然後你可以這樣做:

input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg); 
0

嘗試

console.log($("td>span").next().find(".error").text()) 
+0

我只使用IE瀏覽器(其他瀏覽器被禁止使用php),所以我沒有使用Firebug – 2011-03-05 14:08:07

+0

使用'alert'而不是'console.log',並檢查結果.. – diEcho 2011-03-05 14:11:42

+1

嗨,關於FIREBUG和IE,你可以得到FIREBUG-LITE,它將與IE6 +一起工作。見'http:// getfirebug.com/firebuglite'。 – Neil 2011-03-05 15:18:34

0

可以使用next('span.error')

http://jsfiddle.net/wPZgg/

+0

我試過了,但沒有任何反應 – 2011-03-05 14:06:02

+0

你有沒有看過jsfiddle?不是你想要它做什麼?此外,你使用的是什麼jQuery版本? – JamesHalsall 2011-03-05 14:06:38

+0

更新小提琴JamesHalsall通過添加你的tr在裏面的一個表格裏面,所以它會實際渲染。然後你會發現你的代碼不起作用。 – Billy 2015-11-08 22:43:14

2

問題是.next()和.nextAll()只通過兄弟姐妹(具有相同父代的元素)進行搜索。

從jQuery文檔:

說明:獲取每個元素的所有以下 兄弟姐妹的集合中的 匹配的元素,任選地過濾由選擇 。

在你的情況有:

<tr> 
    <td> title here</td> 
    <td><input name="user_name"/> </td> 
    </tr> 
    <tr> 
    <td colspan="2"> 
     <span class="error"></span> 
    </td> 
    </tr> 

據我瞭解你的jQuery代碼對輸入的運行,對不對?在這種情況下,在調用newxt()或nextAll()之前,你應該先上2級,直到之後選擇下一個,因爲有你想要找到的,所以:

這裏有一個工作示例來檢查它: http://jsfiddle.net/EM5Gw/

+0

聖騎士,也許你可以解釋爲什麼這個作品呢? http://jsfiddle.net/wPZgg/ – JamesHalsall 2011-03-05 16:09:26