Я думаю, тебе следует удалить «li a», и это работает. Ниже приведен код
var linktext1= jQuery(".selected").next().text();
alert (linktext1);
Вот пример jsfiddle
Это действительно все, что вам нужно!
Обновление: Если вы хотите сделать это внутри вашего приложения, у вас есть несколько вариантов:
Application.Idle
и проверить, достигли ли вы времени суток для вызова вашего метода. Этот метод вызывается только тогда, когда ваше приложение не занято другими делами. Быстрая проверка, чтобы увидеть, достигнуто ли целевое время, не должна слишком сильно нагружать ваше приложение, я думаю... Обновление #2: если вы хотите проверять каждые 60 минут, вы можете создать таймер, который просыпается каждые 60 минут, и если время истекло, он вызывает метод.
Что-то вроде этого:
using System.Timers;
const double interval60Minutes = 60 * 60 * 1000; // milliseconds to one hour
Timer checkForTime = new Timer(interval60Minutes);
checkForTime.Elapsed += new ElapsedEventHandler(checkForTime_Elapsed);
checkForTime.Enabled = true;
и затем в обработчике событий:
void checkForTime_Elapsed(object sender, ElapsedEventArgs e)
{
if (timeIsReady())
{
SendEmail();
}
}
Попытайтесь использовать Windows Task Scheduler. Создайте exe, который не запрашивает вводы данных пользователем.
https://docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page
Решение с Системой. Поточная обработка. Таймер:
private void nameOfMethod()
{
//do something
}
/// <summary>
/// run method at 22:00 every day
/// </summary>
private void runMethodEveryDay()
{
var runAt = DateTime.Today + TimeSpan.FromHours(22);
if(runAt.Hour>=22)
runAt = runAt.AddDays(1.00d); //if aplication is started after 22:00
var dueTime = runAt - DateTime.Now; //time before first run ;
long broj3 = (long)dueTime.TotalMilliseconds;
TimeSpan ts2 = new TimeSpan(24, 0, 1);//period of repeating method
long broj4 = (long)ts2.TotalMilliseconds;
timer2 = new System.Threading.Timer(_ => nameOfMethod(), null, broj3, broj4);
}
Если вы хотите, чтобы исполняемый файл запускался, используйте запланированные задачи Windows. Я собираюсь предположить (возможно, ошибочно), что вы хотите, чтобы метод выполнялся в вашей текущей программе.
Почему бы просто не запустить поток, непрерывно сохраняющий дату последнего вызова метода?
Просыпаться ли он каждую минуту (например) и, если текущее время больше указанного времени и последней даты сохраняется не текущая дата, вызовите метод и обновите дату.
Лучший метод, который я знаю, и, вероятно, самый простой - использовать планировщик задач Windows для выполнения кода в определенное время дня или заставить приложение работать постоянно и проверять определенное время дня, или написать службу windows, которая делает то же самое.
Когда я создаю приложения, требующие такой функциональности, я всегда использую Планировщик задач Windows через простую библиотеку .NET , которую я нашел .
Пожалуйста, см. Мой ответ на аналогичный вопрос , где приведен пример кода и другие пояснения.
Как говорили другие, вы можете использовать консольное приложение для запуска по расписанию. Другие не сказали, что это приложение может запускать перекрестный процесс EventWaitHandle, который вы ожидаете в своем основном приложении.
Консольное приложение:
class Program
{
static void Main(string[] args)
{
EventWaitHandle handle =
new EventWaitHandle(true, EventResetMode.ManualReset, "GoodMutexName");
handle.Set();
}
}
Главное приложение:
private void Form1_Load(object sender, EventArgs e)
{
// Background thread, will die with application
ThreadPool.QueueUserWorkItem((dumby) => EmailWait());
}
private void EmailWait()
{
EventWaitHandle handle =
new EventWaitHandle(false, EventResetMode.ManualReset, "GoodMutexName");
while (true)
{
handle.WaitOne();
SendEmail();
handle.Reset();
}
}