簡體   English   中英

在jQuery元素上調用用戶定義的javascript函數

[英]Calling user defined javascript function on jQuery element

我一直在嘗試在jQuery元素上調用用戶定義的JavaScript函數,盡管我在這里看到了一些有關它的主題,但是在將其邏輯應用於我的情況時仍然遇到了一些麻煩。 到目前為止,這是我嘗試過的:

Javscript和jQuery:

    $(document).ready(function() {

// JavaScript function     
     nl2br = function (str, is_xhtml) {
            var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>';
            return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
        }



    // jQuery Call
        if ( ! $('.mediaDesc:contains("p")').length || ! $('.mediaDesc:contains("div")').length || ! $('.mediaDesc:contains("span")').length ) {
                nl2br(this);
            }

    }); //end document ready

HTML:

<div class="mediaDesc">
Hello World!
I am text on a new line soon to have a br tag before me!    
</div>

我的目標是動態查找帶有mediaDesc類的div,以查看其內部內容是否包含html標簽,例如p,span或div。 如果不是,則對其應用nl2br JavaScript函數。 任何幫助,將不勝感激。 提前致謝。

根據當前的可用信息,我相信您需要這樣的東西:

$(".mediaDesc").each(function () {
    if ($(this).find("p").length == 0 || $(this).find("div").length == 0 || $(this).find("span").length == 0)
    {
        $(this).html(nl2br($(this).html()));
    }
});

編輯:修復對.contains

http://jsfiddle.net/s8eNh/

.contains用於在節點內搜索文本。 您想要的是:

$('.mediaDesc').not(':has(p, div, span)').each(nl2br)

如果您需要處理節點,並且僅使用texthtml調用nl2br,請執行以下操作:

$('.mediaDesc').not(':has(p, div, span)').each(function(){
    nl2br( $(this).html() )
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM