Javascript 防止标记在URL上重定向
我被困在一个非常普通的监狱里。我有YII CLINK PAGER分页小部件生成的HTML代码:Javascript 防止标记在URL上重定向,javascript,php,jquery,yii,pagination,Javascript,Php,Jquery,Yii,Pagination,我被困在一个非常普通的监狱里。我有YII CLINK PAGER分页小部件生成的HTML代码: <ul class="yiiPager" id="yw0"> <li class="first hidden"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&analysis_type=4&_=141
<ul class="yiiPager" id="yw0">
<li class="first hidden"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&analysis_type=4&_=1410520989427"><< First</a></li>
<li class="previous hidden"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&analysis_type=4&_=1410520989427">< Previous</a></li>
<li class="page selected"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&analysis_type=4&_=1410520989427">1</a></li>
<li class="page"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&analysis_type=4&_=1410520989427&page=2">2</a></li>
</ul>
但通过单击任何
标记,它将重定向到href中给出的链接,以防止我使用e.preventDefault()代码>但它仍然没有出现在JQuery代码中,并且没有显示警报
请帮忙。提前感谢。因为您的定位标记是动态创建的。您需要使用事件委派。因为元素应该在事件绑定时出现在dom上。在事件委派的情况下,事件绑定到dom上显示的文档或父元素
$(document).on('click', "ul.yiiPager li.page a", function(e) {
e.preventDefault();
alert($(this).attr('href'));
loadlistData($(this).attr('href'));
});
因为锚定标记是动态创建的。您需要使用事件委派。因为元素应该在事件绑定时出现在dom上。在事件委派的情况下,事件绑定到dom上显示的文档或父元素
$(document).on('click', "ul.yiiPager li.page a", function(e) {
e.preventDefault();
alert($(this).attr('href'));
loadlistData($(this).attr('href'));
});
案例1(直接):
$(“ul.yiiPager li.page a”)。打开(“单击”,函数(){…});
我希望ul.yiiPager li.page中的每个ul.yiiPager li.page都能听清楚:当你被点击时,做点什么
案例2(委托):
$(“ul.yiiPager li.page”)。在(“单击”,“a”,function(){…})上;
ul.yiiPager li.page当您的任何子元素被单击时,请对它们进行处理
总结
在案例1中,每个跨度都单独给出了说明。如果创建了新的跨距,他们将不会听到指令,也不会响应单击。每个a都对自己的事件直接负责
在案例2中,只有容器得到了指示;它负责通知代表其子元素的单击。捕获事件的工作已被委派。案例1(直接):
$(“ul.yiiPager li.page a”)。打开(“单击”,函数(){…});
我希望ul.yiiPager li.page中的每个ul.yiiPager li.page都能听清楚:当你被点击时,做点什么
案例2(委托):
$(“ul.yiiPager li.page”)。在(“单击”,“a”,function(){…})上;
ul.yiiPager li.page当您的任何子元素被单击时,请对它们进行处理
总结
在案例1中,每个跨度都单独给出了说明。如果创建了新的跨距,他们将不会听到指令,也不会响应单击。每个a都对自己的事件直接负责
在案例2中,只有容器得到了指示;它负责通知代表其子元素的单击。捕获事件的工作已经委派。您的锚定标记是动态创建的吗?@AnoopJoshi是的,它是通过YII分页小部件创建的。我用您的示例代码制作了一个JSFIDLE,一切都很顺利,我看到了警报。顺便说一句,输入返回false代码>在末尾,以便可以执行loadlistData
。然后让舒尔在创建标签后加载jQuery代码。或者使用下面的Anoops答案(实际上就是这样)。你的锚定标签是动态创建的吗?@AnoopJoshi是的,它是通过YII分页小部件创建的。我用你的示例代码制作了一个JSFIDLE,一切都很好,我看到了警报。顺便说一句,输入返回false代码>在末尾,以便可以执行loadlistData
。然后让舒尔在创建标签后加载jQuery代码。或者使用下面的答案(这确实是正确的)。非常感谢:)哦!你说得对。这应该可以解决问题。我没有意识到,链接在哪里生成的动态非常感谢:)哦!你说得对。这应该可以解决问题。我没有意识到链接是动态生成的