6

私はGreasemonkeyスクリプトを書き込もうとしています。Webページには次のようなものがあります。

<div id="div1" class="..." title="
  asdsadsadasd&nbsp;&lte;...
">...</div>

attrjQueryメソッドを使用してタイトルを取得したいと思います。ただし、空の値を返します。私のjsコードは次のようなものです:

$("#div1").attr("title");

私はさまざまな方法でアラートを試しましたが、必要な要素が適切に選択されており、他のすべての属性は問題ないことを確信しています。これだけで空の文字列が返されます!('')それはマルチラインであることと関係がありますか?

詳細: 最新のjQuery(1.8.2)を使用しており、ブラウザーはFirefox16.0.1です。私はこのリンクを見ました、そしてそれはそこで働きました!だから多分それは何か他のもののためです。実際、私は自分のものではないWebページを編集するGreasemonkeyスクリプトでコーディングしています。したがって、HTMLコードを編集することはできません。

4

5 に答える 5

9

titledivの有効な属性ではありませんが、それでも機能するはずです。HTMLを簡単に変更できる場合は、次を使用できます。

<div id="div1" class="..." data-title="
  asdsadsadasd&nbsp;&lte;...
">...</div>

JS

alert( $("#div1").data("title"));

document.readyまた、コードが起動するときに要素が存在するように、コードをラップしていることを確認してください。これがあなたの問題かもしれないと思う

$(function(){
/* your code*/

})
于 2012-10-21T21:22:55.903 に答える
1

問題はjQueryのバージョンに関連している可能性があります。

JQuery1.8.2で正常に実行されています。ChromeとIE9で試してみました。

<div id="div1" class="..." title="      
asdsadsadasd&nbsp;&lte;...^+%:&/^+%6732045623459^+%?^+%)=1234114     asdfhj asklhdjflasdjfkasjdfasdk nf asdf as
 fsa
df sadf asd
f asdf 
sadf asdf sadf as
df 
sdfas 
f
asdf asdf        
">...</div>

https://jsfiddle.net/LgkhW/2/

于 2012-10-21T21:27:22.613 に答える
1

Greasemonkeyスクリプトが起動した後、AJAXを介して追加されるtitleため(またはほとんどの場合)は空白です。<div>

この種の状況を処理するには、waitForKeyElements()ユーティリティを使用します。

これは、jQueryを使用してそのタイトルを取得するための完全なスクリプトです。waitForKeyElements

// ==UserScript==
// @name     _Grab element's title, when it is added by AJAX
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle   
// ==/UserScript==
/*- The @grant directive is needed to work around a design change introduced
    in GM 1.0.   It restores the sandbox.
*/

function grabDivTitle (jNode) {
    //***** YOUR CODE HERE *****
    var titleStr    = jNode.attr ("title");
    console.log ("Title is:", titleStr);
}

waitForKeyElements ("#div1", grabDivTitle);
于 2012-10-21T22:00:40.303 に答える
1

同様の問題が発生しましたが、jqueryuiツールチップ機能が問題の原因であるようです。最終的に、jqueryuiとは関係のない別の属性を要素に追加しました。alt要素を使用しましたが、すでに使用している場合は、data-altのようなものを使用できます。

<a class="tooltip" 
    title="this will show up in the tooltip and may cause trouble using title later on" 
    data-alt="Grab this attribute instead of the title to bypass jqui showing the title attr as an empty string"
/>
<script>
    $(".tooltip").tooltip();
    a.click(function(){
        var title = $(this).attr('title'); // this showed up as an empty string
        title = $(this).attr('data-alt'); // this showed up as the text I was expecting
    });
</script>
于 2015-01-20T14:52:28.500 に答える
0

バグのようです:

$("<div>").attr("tilte","dyanmic").addClass("test").appendTo("body");
alert($("#div1").attr("title"));
alert($(".test").attr("title"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1" class="..." title="static">...</div>

于 2015-10-22T12:01:04.810 に答える