2017-01-01 26 views
0

我在我的頁面上有一個測驗,基本上是一個問題的h1和一個列表中的4個按鈕。用jquery重新調整元素

無障礙我有每個按鈕的詠歎調標籤,當用戶點擊錯誤的答案我添加'不正確的答案'的詠歎調標籤。爲了幫助用戶理解他點擊了錯誤的答案,我想重新關注按鈕,以便用戶知道這是不正確的。

我的問題是,如果焦點已經在按鈕上,屏幕閱讀器不會'重讀'這個按鈕。

<h1>this is a question</h1> 
<ul> 
    <li><button id="answer_a" aria-label="answer a">this is answer a</button></li> 
    <li><button id="answer_b" aria-label="answer b">this is answer b</button></li> 
    <li><button id="answer_c" aria-label="answer c">this is answer c</button></li> 
    <li><button id="answer_d" aria-label="answer d">this is answer d</button></li> 
</ul> 

$('#answer_a').on('click', function(){ 
    $(this).attr('aria-label', 'incorrect_answer').focus(); 
}); 

https://jsfiddle.net/koL51nxu/

+0

您在'click'事件後遺漏了''''。另外,你的問題似乎還不清楚,至少對我來說。你可以請一個小提琴演示你的問題,所以我可以幫忙嗎?現在,您只有第一個按鈕附加了點擊事件,這有點令人誤解。 – Ionut

+0

我加了jsfiddle。 我會嘗試清除我的問題:我使用配音使我的測驗可以訪問,當用戶專注於一個按鈕時,語音讀取詠歎調標籤。當他點擊錯誤的答案時,詠歎調標籤會發生變化,但是聲音不會讀取新的詠歎調標籤,直到我將焦點從背面按下並重新輸入。 – user2587454

+0

我不明白你想要什麼效果.. –

回答

0

可以使用disabled屬性這一點。

$('#answer_a').on('click', function(){ 
 
    $(this).attr('aria-label', 'incorrect_answer'); 
 
\t $(this).attr('disabled', 'disabled'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<h1>this is a question</h1> 
 
<ul> 
 
    <li><button id="answer_a" aria-label="answer a">this is answer a</button></li> 
 
    <li><button id="answer_b" aria-label="answer b">this is answer b</button></li> 
 
    <li><button id="answer_c" aria-label="answer c">this is answer c</button></li> 
 
    <li><button id="answer_d" aria-label="answer d">this is answer d</button></li> 
 
</ul>

jsfiddle

更改功能$('#answer_a')$('ul li button')會降低你的代碼。因此,不需要再次爲每個按鈕編寫代碼 - example

+0

OP爲什麼禁用該按鈕? – epascarello

0

謝謝大家。

我發現使用:blur()之前,重新調整幫助我。