У меня есть куча тегов webtrend для передачи на сервер webtrend с помощью dcsMultitrack, который довольно прост, но есть много дублирования кода, скажем:
1. var args = ["DCSext.name","a", "DCSext.title", "random"]; //etc ...
чем селектор
2. $("a", "#main").bind("click", function(){
do some extra stuff.....
dcsMultitrack.apply(this, args);
})
***
Edit:
$("a", "#main").bind("mouseover", function(){
do some extra stuff.....
dcsMultitrack.apply(this, args);
})
or maybe
$("#main").delegate("mouseover", function(){
do some extra stuff.....
dcsMultitrack.apply(this, args);
})
etc....
Начиная с номера 1, скажем, у меня есть некоторые общие параметры commonlogs=[];
, которые будут доступны для каждого селектора и общих параметров, но в каждом конкретном случае будут дополнительные параметры, чем я не хочу повторять эти общие журналы. Кроме того, значение аргументов, которое я передаю, основано на некоторых элементах dom, скажем, я получаю значение из dom, скажем, цвет селектора, имя игрока и т. Д., Поэтому в основном это должно быть в одном контексте .
case: $("#selector").bind("click", function(){
var playername = $(this).parent().text(),
title = $(this).closest('tr').find(".title").text(); etc etc..
args = ["DCSext.name", palyername, "DCSext.title", title, etc ];
dcsMultitrack.apply(this, args);
});
Редактировать2: уточнить:
$("#selector1").bind("change", function(){
var val1 = someval1, val2= someval2, //etc.
args = ["DCSext.something", val1, "DCSext.title", val2]; //
dcsMultitrack(this, args);
});
$("#selector2").bind("mouseover", function(){
var val3 = someval1, val4= someval2, //etc.
args2 = ["DCSext.something", val3, "DCSext.title", val4]; //
dcsMultitrack(this, args2);
});
примечание: аргументы, есть некоторые общие параметры, скажем, var commonargs = ["DCSext.common", one, /*etc*/];
1, 2 повторяется, поскольку значения разные, но есть ли способ удалить дублирование всего этого кода? Я хочу извлечь в одну функцию и передать только селектор и дополнительные значения.
Более того, еще одна проблема:
var context = "#main,#main2";
$(context).delegate("a", "click", function(){
something ....
dcsMultitrack.apply(this, args);
});
Это отлично работает, но я могу передать массив вместо строки в качестве контекста и извлечь в функцию?
что-то вроде
var context = ["#main", "#main2"];
Пожалуйста, дайте мне знать, если потребуется больше разъяснений.