Используйте jQuery для удаления отделения без детей

OpenCV не предоставляет кнопку , но вы можете легко использовать цветной прямоугольник и проверить, находится ли точка щелчка на изображении внутри этого прямоугольника.

Помните, что OpenCV HighGui очень прост и предназначен только для целей отладки. Вы можете использовать полнофункциональную графическую библиотеку как Qt или аналогичную.

Однако это небольшой пример, показывающий (зеленое) изображение и кнопку сверху:

Щелчок по кнопке будет печатать «Щелкнуть» на stdout:

Код:

#include 
#include 
using namespace cv;
using namespace std;


Mat3b canvas;
string buttonText("Click me!");
string winName = "My cool GUI v0.1";

Rect button;


void callBackFunc(int event, int x, int y, int flags, void* userdata)
{
    if (event == EVENT_LBUTTONDOWN)
    {
        if (button.contains(Point(x, y)))
        {
            cout << "Clicked!" << endl;
            rectangle(canvas(button), button, Scalar(0,0,255), 2);
        }
    }
    if (event == EVENT_LBUTTONUP)
    {
        rectangle(canvas, button, Scalar(200, 200, 200), 2);
    }

    imshow(winName, canvas);
    waitKey(1);
}

int main() 
{
    // An image
    Mat3b img(300, 300, Vec3b(0, 255, 0));

    // Your button
    button = Rect(0,0,img.cols, 50);

    // The canvas
    canvas = Mat3b(img.rows + button.height, img.cols, Vec3b(0,0,0));

    // Draw the button
    canvas(button) = Vec3b(200,200,200);
    putText(canvas(button), buttonText, Point(button.width*0.35, button.height*0.7), FONT_HERSHEY_PLAIN, 1, Scalar(0,0,0));

    // Draw the image
    img.copyTo(canvas(Rect(0, button.height, img.cols, img.rows)));

    // Setup callback function
    namedWindow(winName);
    setMouseCallback(winName, callBackFunc);

    imshow(winName, canvas);
    waitKey();

    return 0;
}

17
задан 9 February 2009 в 06:48
поделиться

5 ответов

Удалить элемент с id равный removeme:

$("#removeme").remove();

Для удаления элемента с id равный removeme, только если это пусто:

$("#removeme:empty").remove();

Для удаления весь пустой <div> с:

$("div:empty").remove();

РЕДАКТИРОВАНИЕ: , Если это не пусто, но имеет пробел:

if($.trim($("#removeme").text()) == "") {
  $("#removeme").remove();
}
50
ответ дан 30 November 2019 в 10:21
поделиться

Я думаю, что Вы хотите это:

$('div#outer div:empty').remove();

Это удалит все пустые отделения в div#outer узле

0
ответ дан 30 November 2019 в 10:21
поделиться

Можно также использовать:

$ ('div:empty') .remove ();

http://docs.jquery.com/Selectors/empty

2
ответ дан 30 November 2019 в 10:21
поделиться

Я не мог найти селектор, который игнорирует текстовые узлы, таким образом, это - самый быстрый/самый грязный фрагмент кода, я мог придумать.

$("#header").each(function() { 
    if($(this).children().length < 1) 
        $(this).remove() 
});
0
ответ дан 30 November 2019 в 10:21
поделиться

Я пошел с:

$('#outer > div').filter(function (index) { 
    return $(this).children().length < 1; 
}).remove();

Это говорит:

  • дайте мне всех дочерних элементов div #outer
  • используйте фильтр, чтобы избавиться от всего, что имеет дочерние узлы
  • удалить все, что мы еще выбрали

К сожалению, это приведет к удалению div, если он содержит текст, что, вероятно, не то, что хотел бы исходный плакат. Обычный текст не считается дочерним.

6
ответ дан 30 November 2019 в 10:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: