2016-12-29 77 views
1

如何允許TR元素上的onClick事件但阻止複選框中的事件? 複選框是表格中TR的TD的子代。允許TR元素上的onclick事件,但阻止複選框中的事件

我在這個問題上做的是在所有TD上添加onClick,但不在複選框的TD中。

有沒有更好的方法來解決這個問題?

<tr key={item._id} id={item._id} className={(item.status == "unread")? "unread":""}> 
    <td className="inbox-small-cells"> 
     <input type="checkbox" className="mail-checkbox" /> 
    </td> 
    <td className="view-message dont-show" onClick={this.viewMsg.bind(this,item.sender)}>{item.sender} {(item.category.length > 0)? 
         <span className="label label-info pull-right">{item.category}</span>:""}</td> 
    <td className="view-message " onClick={this.viewMsg.bind(this,item.sender)}>{item.subject.trunc(40)}</td> 
    <td className="view-message inbox-small-cells" onClick={this.viewMsg.bind(this,item.sender)}>{(item.attachments.length > 0) ? <i className="fa fa-paperclip"></i> : ""}</td> 
    <td className="view-message text-right" onClick={this.viewMsg.bind(this,item.sender)}>{item.createdAt}</td> 
</tr> 
+0

哪裏是你的代碼2點的工作的例子嗎?請使用代碼請 –

+0

請稍候片段.. –

+0

如果您正在調用js函數onClick,您可以考慮刪除此複選框上的此功能 –

回答

1

像其他人已經指出event.stopPropagation()。我們也可以使用CSS屬性pointer-events:none或屬性disabled:true。下面的代碼片段具有使用.css().attr()

代碼片段

// Option #1 
 
$('.mail-checkbox1').css('pointer-events', 'none'); 
 

 

 
// Option #2 
 
$('.mail-checkbox2').attr('disabled', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section> 
 
    <div class="inbox-small-cells"> 
 
    <label>Control #0 (Normal test case)</label> 
 
    <input type="checkbox" class="mail-checkbox0"> 
 
    <br/> 
 

 
    <label>Option #1 (pointer-events:none)</label> 
 
    <input type="checkbox" class="mail-checkbox1"> 
 
    <br/> 
 

 

 
    <label>Option #2 (disabled: true)</label> 
 
    <input type="checkbox" class="mail-checkbox2"> 
 
    <br/> 
 
    </div> 
 
</section>

0

您可以使用TDS /複選框event.stopPropagation()調用傳播事件給其父母在DOM樹。

改成這樣:

<tr key={item._id} id={item._id} onClick={this.viewMsg.bind(this,item.sender)} className={(item.status == "unread")? "unread":""}> 
    <td className="inbox-small-cells" onClick={this.stopEventProp(event)}> 
     <input type="checkbox" className="mail-checkbox" /> 
    </td> 
    <td className="view-message dont-show">{item.sender} {(item.category.length > 0)? 
         <span className="label label-info pull-right">{item.category}</span>:""}</td> 
    <td className="view-message ">{item.subject.trunc(40)}</td> 
    <td className="view-message inbox-small-cells">{(item.attachments.length > 0) ? <i className="fa fa-paperclip"></i> : ""}</td> 
    <td className="view-message text-right">{item.createdAt}</td> 
</tr> 

現在,你必須把這個方法在你的類:

stopEventProp(e){ 
    e.stopPropagation(); 
} 
+0

你可以提供一個例子如何使用這個? – JMA

+0

@JohnArellano更好地把你的代碼試試看,這會幫助我們爲你提供更好的解決方案 – Jai

+0

_this3.stopEventProp不是一個函數,這是結果 – JMA

相關問題