如何使用javascript或jQuery从不同的<LI>
同时调用和运行相同的函数。
我想使用不同参数的相同功能。我想像浏览器选项卡一样创建。多个选项卡同时加载。
答案 0 :(得分:1)
(抱歉,我最初错过了jquery
标签。)
HTML:
<ul id="mylist">
<li>One</li>
<li>Two</li>
</ul>
使用jQuery的JavaScript:
$("#mylist > li").click(function() {
// Here, `this` refers to the raw DOM element.
// If you want to know which one it is by index,
// you can use $(this).index() (they start at 0).
// Or you can store information on the element
// using data-* attributes, and use
// $(this).data(...)
});
当我错过了jquery
标签(doh!)时的原始答案:
<li onclick="doSomething(1);">One</li>
<li onclick="doSomething(2);">Two</li>
HTML:
<ul id="mylist">
<li>One</li>
<li>Two</li>
</ul>
JavaScript的:
var ul = document.getElementById("mylist");
var li;
var index;
for (li = ul.firstChild; li; li = li.nextSibling) {
if (li.nodeName.toUpperCase() === "LI") {
li.onclick = makeCallback(++index);
}
}
function makeCallback(val) {
return function() {
doSomething(val);
}
}
(相同的HTML。)
JavaScript的:
var ul = document.getElementById("mylist");
var li;
var index;
for (li = ul.firstChild; li; li = li.nextSibling) {
if (li.nodeName.toUpperCase() === "LI") {
hookEvent(li, "click", makeCallback(++index));
}
}
function makeCallback(val) {
return function() {
doSomething(val);
}
}
function hookEvent(element, eventName, handler) {
if (element.addEventListener) {
element.addEventListener(eventName, handler, false);
}
else if (element.attachEvent) {
element.attachEvent("on" + eventName, handler);
}
答案 1 :(得分:0)
尝试使用$ .each:
$(...).each(function(index, Element) {
...
});
请参阅:http://api.jquery.com/each/ 例如:
$(...).each(function(index, Element) {
var target = $(this);
target.click(function() {
// when user click...
});
// something other logic...
});
答案 2 :(得分:0)
$('li').click(function(){ var target = $(this);// get your target element
});
答案 3 :(得分:0)
有很多开箱即用的解决方案,例如jquery ui。如果你想手动完成,你可以很容易地做到。
jQuery标签: http://jqueryui.com/demos/tabs/
将您的内容区域命名为:
#main_0
#main_1
...
然后将选择器添加到LI 类似的东西:
var CurrentTabIndex = null;
$("li").live('click', function(e) {
var TabIndex = $(this).index;
var divName = "#main_" + TabIndex;
$.ajax({
url: "OpenTab.php",
data: { TabId: TabIndex },
success: function (data) {
$(divName).html(data);
$(divName).show();
if(CurrentTabIndex != null)
{
$("#main_" + CurrentTabIndex).hide();
}
CurrentTabIndex = TabIndex;
}
});
});
答案 4 :(得分:0)
这是jquery方式:
$("li").click(function(){
doSomething($(this).data('someValue'));
});
使用HTML保存参数。
<li data-someValue="one">One</li>
<li data-someValue="two">Two</li>
答案 5 :(得分:0)
在rel
元素中添加<li>
属性,然后在<li>
上调用该函数
$('li.your-class').bind('event_type', function(){
var ref = $(this).attr('rel');
// call your function
myFunction(ref);
}