胡子哥哥
2019-03-05 09:31:55
1.用jquery寫一個問卷,有一道題是如果選了這道題的某個選項 那么這個選項會被打鉤并且會出現一個輸入框供用戶輸入描述,如下圖:再次點擊這個選項則輸入框消失,選項收起,我用的是Li標簽,給Li標簽綁定點擊事件,如果被點擊那么插入一個textarea標簽,但是這時候被插入的textarea標簽無法獲得焦點,我想點擊這個選項后點擊輸入框輸入文字,但是選項被收起了,相當于觸發了Li的點擊事件,我的解決方法如下:即如果點擊的是輸入框那么return false,不讓其觸發li的點擊事件,但是感覺不是正規解法,請問應該怎么解決這種問題,把return false換成stopPropgation阻止冒泡阻止觸發li的點擊事件為什么沒用?
1 回答

湖上湖
TA貢獻2003條經驗 獲得超2個贊
1.stopPropgation不行是因為你綁定在li上,其不能阻止同一個節點上的其他事件句柄被調用。而且整體運行沒有被終止,后面的if仍然有效并執行。而return則直接結束了。
2.減少DOM操作,提高效率。
3.可以換種思路,代碼如下:
$( '.type-2 li' ).on( {
click( e ) {
let $this = $( this );
$this.toggleClass( 'selected' ).hasClass( 'selected' )
? e.target.nodeName === 'LI'
&& $this
.children( 'i' )
.remove()
: $this
.append(
`<i class="iconfont icon-select-answer animated slow infinite">
<textarea placeholder='輸入具體描述(必填):'></textarea>
</i>`
).focus()
}
});
添加回答
舉報
0/150
提交
取消