好的,所以我有一些像这样的HTML:
<div id="navigation">
<ul>
<li>
<a>tab name</a>
<span class="delete-tab">X</span>
</li>
<li>
<a>tab name</a>
<span class="delete-tab">X</span>
</li>
<li>
<a>tab name</a>
<span class="delete-tab">X</span>
</li>
<li class="selected">
<a>tab name</a>
<span class="tab-del-btn">X</span>
</li>
</ul>
</div>
然后我在我无法控制的页面上执行了javascript(这是在liferay门户网站中)。然后我想用自己的自定义javascript操作事物。
... SO
对于每个span.delete-tab元素,先前已分配了一个on-click事件函数。每个跨度都是相同的函数调用。我想获取该函数(any)并从span.tab-del-btn的click事件中调用它?
这就是我试图做的事情:
var navigation = jQuery('#navigation');
var navTabs = navigation.find('.delete-tab');
var existingDeleteFunction = null;
navTabs.each(function (i){
var tab = jQuery(this);
existingDeleteFunction = tab.click;
});
var selectedTab = jQuery('#navigation li.selected');
var deleteBtn = selectedTab.find('.tab-del-btn');
deleteBtn.click(function(event){
existingDeleteFunction.call(this);
});
虽然不起作用。 existingDeleteFunction不是原始函数,它是一些jquery默认函数。
有什么想法吗?
答案 0 :(得分:0)
试试这个:
var navTabs = $("#navigation .delete-tab:first");
$(".tab-del-btn","#navigation li.selected").click(function() {
navTabs.click();
});
我也为你缩短了代码。
答案 1 :(得分:0)
我的错,但有更多的信息,我意识到我遗漏了。我需要在执行其中一个函数后删除.delete-tab元素。无论如何,经过一些戳我发现这是有效的。我想尽量少做几行代码。有任何想法吗 ?
var navigation = jQuery('#navigation');
var navTabs = navigation.find('.delete-tab');
var events = jQuery.data(navTabs.get(0), "events");
var clickEvents = events.click;
var existingDeleteFunction = null;
jQuery.each(clickEvents, function(i, val) {
existingDeleteFunction = val;
});
navTabs.each(function (i){
var tab = jQuery(this);
tab.remove();
});
var selectedTab = jQuery('#navigation li.selected');
var deleteBtn = selectedTab.find('.tab-del-btn');
deleteBtn.bind('click',existingDeleteFunction);
答案 2 :(得分:0)
您可以将发布的代码缩短为:
var clickEvents = jQuery('#navigation .delete-tab').data("events").click;
var btn = jQuery('#navigation li.selected .tab-del-btn');
jQuery.each(clickEvents, function(i, val) {
btn.bind('click',val);
});
jQuery('#navigation .delete-tab').remove();
这会将原始按钮的每个点击处理程序分配给.tab-del-btn
元素,该功能应该等同于您在后续答案中发布的代码。