js怎样去除,添加onclick事件

js怎样去除,添加onclick事件,第1张

要实现效果:点击链接先去掉onclick属性,3秒后再自动加上该标签中的onclick属性

jQuery中,针对标签属性的 *** 作都是使用attr()方法来实现的,比如:$(“a”).attr(“onclick”)可获得a标签的onclick属性,对应的:

删除onclick属性:$(“a”).removeAttr(“onclick”)

设置onclick属性:$(“a”).attr(“onclick”,”test()”)

在Android中为组件绑定点击事件的方式可以分为四种,

1、 在xml布局文件中,定义onclick的方式

<!—第一步在XML文件中给对应组件添加Onclick属性-->

<Button

android:id="@+id/submitbutton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentEnd="true"

android:layout_alignParentRight="true"

android:onClick="buttonClickHandle"

android:layout_alignParentTop="true"

android:text="提交" />

//第二步在对应的Activity中创建一个与onClick属性值相同的方法,并传入一个View参数,当Button被点击时就会回调这个方法。

public void buttonClickHandle(View view) {

Snackbar.make(coordinatorLayout, "你点击了Button", Snackbar.LENGTH_LONG)

.setAction("Action", null).show()

}

另外三种绑定点击事件的方式实际上就是通过组件调用setOnClickListener()的方法,下面我们就来看一下这个方法的源码。

/**

* Register a callback to be invoked when this view is clicked. If this view is not

* clickable, it becomes clickable.

*

* @param l The callback that will run

*

* @see #setClickable(boolean)

*/

public void setOnClickListener(@Nullable OnClickListener l) {

if (!isClickable()) {

setClickable(true)

}

getListenerInfo().mOnClickListener = l

}

根据源码我们可以看到这个方法中需要一个OnClickListener的对象。下面我们就来看看这个OnClickListener对象是个什么东东。

/**

* Interface definition for a callback to be invoked when a view is clicked.

*/

public interface OnClickListener {

/**

* Called when a view has been clicked.

*

* @param v The view that was clicked.

*/

void onClick(View v)

}

根据源码我们可以看到实际上这个OnClickListener就是一个接口,这个接口中有一个onClick的抽象方法。所以我们在创建这个OnClickListener对象是还需要实现这个抽象方法。这个onClick的抽象方法实际上就是当我们点击按钮后会回调的方法。我们对于点击事件的响应处理就在这个方法中进行。

现在我们已经了解了设置点击事件的setOnClickListener方法,根据我们如何创建这个方法中的OnClickListener对象,我们设置点击事件的方式可以分为如下三种:

1、内部类的形式

a. package com.example.hsport.catalog

import android.os.Bundle

import android.support.design.widget.CoordinatorLayout

import android.support.design.widget.Snackbar

import android.support.v7.app.AppCompatActivity

import android.view.View

import android.widget.Button

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator)

// 获取button对象

Button button = (Button) findViewById(R.id.submitbutton)

//创建内部类的实例

MyListener myListener = new MyListener()

//设置button的点击事件,将实现OnClickListener接口的内部类实例传入到setOnClickListener方法中

button.setOnClickListener(myListener)

}

//创建一个内部类实现View.OnClickListener接口,并实现其onClick方法

private class MyListener implements View.OnClickListener {

@Override

public void onClick(View v) {

Snackbar.make(coordinatorLayout, "你点击了Button", Snackbar.LENGTH_LONG).setAction("Action", null).show()

}

}

}

2、 匿名内部类的方式

package com.example.hsport.catalog

import android.os.Bundle

import android.support.design.widget.CoordinatorLayout

import android.support.design.widget.Snackbar

import android.support.v7.app.AppCompatActivity

import android.view.View

import android.widget.Button

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout coordinatorLayout

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator)

//获取Button对象

Button button = (Button) findViewById(R.id.submitbutton)

//以创建一个View.OnClickListener的匿名内部类,并实现它的onClick方法

button.setOnClickListener(new View.OnClickListener() {

//在onClick方法中我们就可以设置button的响应代码了

@Override

public void onClick(View v) {

Snackbar.make(coordinatorLayout, "你点击了Button",Snackbar.LENGTH_LONG).setAction("Action", null).show()

}

})

}

3、 让主类实现OnClickListener接口,然后再主类实现未实现的方法

package com.example.hsport.catalog

import android.os.Bundle

import android.support.design.widget.CoordinatorLayout

import android.support.design.widget.Snackbar

import android.support.v7.app.AppCompatActivity

import android.view.View

import android.widget.Button

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private CoordinatorLayout coordinatorLayout

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator)

//获取Button对象

Button button = (Button) findViewById(R.id.submitbutton)

//因为我们让MainActivity实现了View.OnClickListener这个接口,所以setOnClickListener方法中的参数直接传入this即可。

button.setOnClickListener(this)

}

//因为MainActivity实现了View.OnClickListener接口,所以在MainActivity中还有要实现该接口中改的onClick方法来处理点击事件。

@Override

public void onClick(View v) {

Snackbar.make(coordinatorLayout, "你点击了Button",Snackbar.LENGTH_LONG).setAction("Action", null).show()

}

}

关于如何给组件绑定点击事件,是Android中的基础知识,如果你还想更加详细的了解,推荐你可以去一个叫做秒秒学的教程网站看看,夯实下基础。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11466996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存