我有一个具有onClick属性的标记。如何使用jQuery从标记中删除事件?甚至可能吗?
答案 0 :(得分:0)
不,这是不可能的。你可以添加一个新事件,然后停止传播,但它很骇人听闻。 jQuery无法删除它不拥有的事件。
如果组件组成道具,您可以覆盖它或添加onClickCapture={e => e.stopPropagation()}
例如,如果您的组件允许您传递道具,即使onClick位于道具传播之后,您仍然可以通过在处理程序之前触发的事件的捕获阶段来执行此操作:
class Foo extends React.Component {
handleClick(e){
console.info(e)
}
render(){
return <button {...this.props} onClick={this.handleClick}>click me</button>
}
}
const app = document.getElementById('app')
ReactDOM.render(<Foo onClickCapture={e => e.stopPropagation()} />, app)
https://jsfiddle.net/tdbs7h05/
否则,你可以阅读源代码并且&#34; hack it&#34;通过更改组件的原型。例如:
class Foo extends React.Component {
handleClick(e){
console.info(e)
}
render(){
return <button onClick={this.handleClick}>click me</button>
}
}
const app = document.getElementById('app')
Foo.prototype.handleClick = (e) => e.preventDefault() || e.stopPropagation()
ReactDOM.render(<Foo />, app)
答案 1 :(得分:0)
哦上面的答案给了我一个想法,所以不要覆盖组件道具,而是覆盖事件。
<button onClick={this.props.handleClick}>click me</button>
var elem = $('.yourbutton');
elem.click(() => { return false });