如果<span>包含文本

时间:2018-05-18 14:19:34

标签: javascript jquery html

尝试将类“复选标记”添加到ID为“partnered”的i

$(document).ready(function () {
  jQuery('span:contains("true")').addClass('checkmark');
});

此代码工作正常,但将类直接附加到它检查的位置。如何将此类附加到完全不同的i元素?

4 个答案:

答案 0 :(得分:1)

理解你的问题有点困难,但如果我理解正确的话

  

“将id复选标记添加到已经id合作的i。我怎样才能将这个类附加到一个完全不同的i元素?”

然后它很简单

$(document).ready(function () {
  $('i[id^="<desired id name>"]').addClass('checkmark');
});

注意:从html / css的角度来看,将它作为id而不是类似乎是相当不实际的

答案 1 :(得分:0)

使用jQuery父选择器:

$(document).ready(function () {
  jQuery('span:contains("true")').parent().addClass('checkmark');
});

甚至更安全,您可以使用.closest

$(document).ready(function () {
  jQuery('span:contains("true")').closest('i.someClass').addClass('checkmark');
});

答案 2 :(得分:0)

以下是您在纯JavaScript中的答案:

// Get the element with ID 'partnered'
// Get a <span> element (create one if there's none)
var partnered = Document.prototype.getElementById.call(document, 'partnered'),
    span = (
        Document.prototype.querySelector.call(document, 'span') ||
        Document.prototype.createElement.call(document, 'span')
    );

// Custom function
function addClass() {
    var args = [... arguments].slice(1),
        $args = args.length,
        element = arguments[0];

    // Loop through arguments to update them
    for (var i = 0; i < $args; i += 1)
        args[i] = String(args[i]);

    // Loop through arguments after updating all of them
    for (var i = 0; i < $args; i += 1) {
        // Cache the index
        var className = args[i];

        // Append new class name
        element.setAttribute(
            'class',

            // Get the current class
            ((element.getAttribute('class') || '')

            // Remove existing duplicates of the class to add
            .replace(RegExp('\\b' + className + '\\b', '')

            // Keep the class attribute tidy
            // and add the class
            .trim() + ' ' + className).trim()
        )
    }
}

/* Synchronously
        A while loop could work too if you're certain enough.
*/
if (span.textContent || span.innerText)
    addClass(partnered, 'checkmarked');

/* Asynchronously */
(function check() {
    if (span.textContent || span.innerText)
        addClass(partnered, 'checkmarked');

    else
        typeof requestAnimationFrame == 'function' ?
            requestAnimationFrame(check) :
            setTimeout(check)
})

答案 3 :(得分:0)

使用

解决
if ($('span#ispartner:contains("true")').length > 0) {
  $("#partnered").addClass("checkmark");
}

感谢您的帮助!