用js怎么实现在同一框内,点击不同按钮显示不同内容

JavaScript018

用js怎么实现在同一框内,点击不同按钮显示不同内容,第1张

你有用jQuery吗。如果是可以用delegate代理点击事件。如果没有,自己写一个,其实就是点击事件的冒泡。

<button type="button" data-target="#div1">显示id为div1的元素里的内容</button>

<button type="button" data-target="#div2">显示id为div2的元素里的内容</button>

为你的每个要点击的按钮加上data-target属性(这是HTML5的data-*特性),假设这些按钮的共同父元素是

#button-wrap

那么就可以这样用代理

$('#button-wrap').delegate('button[data-target]', 'click', function() {

// 获取存储在按钮上的作为 jQuery 选择器的 target 值

var target = $(this).data('target')

// 在 HTML5 中也可以是 var target = this.dataset.target

// 根据target指定的选择器,显示该元素

$(target).show()

})

事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,利用冒泡的原理,把事件加到父级上,触发执行效果

-------------------------------------------------------------------------

如果我们不想或不能够直接操纵目标对象,我们可以利用delegate创建一个代理对象来调用目标对象的方法,从而达到操纵目标对象的目的。代理对象要拥有目标对象的引用。这就是事件代理(也就是说不会直接去操纵对象)

可以用js的事件委托啊。

比如你的分页生成的代码会插入到一个<div id="pager"></div>里,在生成html片段时为a设置一个属性用来表示页数,如:<a href="#" data-page="1">第1页</a>

事件委托的js代码如下:

$('#pager').delegate('a', 'click', function(e){

e.preventDefault() //阻止a的默认事件

var page = $(this).data('page') //从当前a标签属性中取出页码

//处理分页,如果是跳转:

location.href = "/pagename.php?page=" + page

//如果是异步取分页数据:

var page_api = '/pagedata.php?page=' + page

$.get(page_api, function(data, textStatus, jqXHR){

//使用ajax获取数据

//拼装数据并填充到数据显示区:

$('#list-container').append( createHTML(data) )

//重新生成分页区

createPager( page )

})

})

function createHTML(data){

//拼装数据的函数

}

function createPager(curPage){

//生成分页的函数

var tpl = '<a href="#" data-page="{#index}">第{#index}页</a>'

//...

}